From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/2] drm/i915/sdvo: Fix multi function encoder stuff Date: Tue, 18 Sep 2018 21:10:19 +0300 Message-ID: <20180918181019.GX5565@intel.com> References: <20180917151504.8754-1-ville.syrjala@linux.intel.com> <20180917171605.GE2309@intel.com> <20180917173436.GO5565@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 4D5976E450 for ; Tue, 18 Sep 2018 18:12:07 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180917173436.GO5565@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBTZXAgMTcsIDIwMTggYXQgMDg6MzQ6MzZQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIE1vbiwgU2VwIDE3LCAyMDE4IGF0IDEwOjE2OjA1QU0gLTA3MDAsIFJvZHJp Z28gVml2aSB3cm90ZToKPiA+IE9uIE1vbiwgU2VwIDE3LCAyMDE4IGF0IDA2OjE1OjAzUE0gKzAz MDAsIFZpbGxlIFN5cmphbGEgd3JvdGU6Cj4gPiA+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmls bGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+IAo+ID4gPiBTRFZPIGVuY29kZXJzIGNh biBoYXZlIG11bHRpcGxlIGRpZmZlcmVudCB0eXBlcyBvZiBvdXRwdXRzIGhhbmdpbmcgb2ZmCj4g PiA+IHRoZW0uIEN1cnJlbnRseSB0aGUgY29kZSB0cmllcyB0byBtdWNrIGFyb3VuZCB3aXRoIHZh cmlvdXMgaXNfZm9vCj4gPiA+IGZsYWdzIGluIHRoZSBlbmNvZGVyIHRvIGZpZ3VyZSBvdXQgd2hp Y2ggdHlwZSBpdHMgZHJpdmluZy4gVGhhdCBkb2Vzbid0Cj4gPiA+IHdvcmsgd2l0aCBhdG9taWMg YW5kIG90aGVyIHN0dWZmLCBzbyBsZXQncyBudWtlIHRob3NlIGZsYWdzIGFuZCBqdXN0Cj4gPiA+ IGxvb2sgYXQgd2hpY2ggdHlwZSBvZiBjb25uZWN0b3Igd2UncmUgYWN0dWFsbHkgZGVhbGluZyB3 aXRoLgo+ID4gPiAKPiA+ID4gVGhlIGlzX2hkbWkgd2UnbGwgbmVlZCBhcyB0aGF0J3Mgbm90IGRp c2NvdmVyYWJsZSB2aWEgdGhlIG91dHB1dCBmbGFncywKPiA+ID4gYnV0IHdlJ2xsIGp1c3QgbW92 ZSBpdCB1bmRlciB0aGUgY29ubmVjdG9yLgo+ID4gPiAKPiA+ID4gV2UnbGwgYWxzbyBtb3ZlIHRo ZSBzZHZvIGZpeGVkIG1vZGUgaGFuZGxpbmcgb3V0IGZyb20gdGhlIC5nZXRfbW9kZXMoKQo+ID4g PiBob29rIGludG8gdGhlIHNkdm8gbHZkcyBpbml0IGZ1bmN0aW9uIHNvIHRoYXQgd2UgY2FuIGJh aWwgb3V0IHByb3Blcmx5Cj4gPiA+IGlmIHRoZXJlIGlzIG5vIGZpeGVkIG1vZGUgdG8gYmUgZm91 bmQuCj4gPiAKPiA+IEkgd29uZGVyZWQgaWYgdGhpcyBsYXN0IHBhcnQgZGlkbid0IGRlc2VydmVk IGEgc2VwYXJhdGVkIHBhdGNoLiBCdXQgbm90IHN1cmUKPiA+IGhvdyBjaGlja2VuLWVnZyBpc3N1 ZSB0aGlzIGNvdWxkIGNhdXNlIHNvIG1heWJlIHRoZSBzYW1lIHBhdGNoIGlzIGJldHRlcgo+ID4g aW5kZWVkLi4uCj4gCj4gVGhlcmUgYXJlIGJvdGggY2hpY2tlbnMgYW5kIGVnZ3MgaW4gdGhlcmUg Zm9yIHN1cmUuIEkgc3VwcG9zZSBpdCBtaWdodAo+IGhhdmUgYmVlbiBwb3NzaWJsZSB0byBoYW5k bGUgaXQgYnkgY2xlYXJpbmcgdGhlIExWRFMgYml0IGZyb20KPiBvdXRwdXRfZmxhZyBpZiB3ZSBm YWlsIHRvIGZpbmQgdGhlIG1vZGUuIEJ1dCB0aGVuIHdlJ2QgYmUgbGVmdCB3aXRoCj4gYW4gTFZE UyBjb25uZWN0b3Igd2l0aG91dCB0aGUgZmxhZyBhbmQgSSdtIG5vdCBxdWl0ZSBzdXJlIHdoZXJl IHRoZQo+IGNvZGUgd291bGQgbGVhZCBpZiB3ZSBldmVyIHRyaWVkIHRvIHVzZSBpdC4gQWx0aG91 Z2ggb25lIGNhbiBhcmd1ZQo+IHRoYXQgdGhlIGN1cnJlbnQgY29kZSBhbHJlYWR5IGhhcyB0aGF0 IHNhbWUgaXNzdWUsIG1heWJlLgoKRGVjaWRlZCB0byBrZWVwIHRoaXMgcGF0Y2ggYXMgaXMsIGFu ZCBwdXNoZWQgaXQuIFRoYW5rcyBmb3IgdGhlIHJldmlldy4KCj4gCj4gPiAKPiA+IFJldmlld2Vk LWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPiAKPiA+ID4gCj4g PiA+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2 by5jIHwgMTAxICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+ICAx IGZpbGUgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCj4gPiA+IAo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jCj4gPiA+IGluZGV4IDgxMmZlN2IwNmY4Ny4u NzAxMzcyZTUxMmE4IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zZHZvLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jCj4g PiA+IEBAIC05OSwzMSArOTksMTIgQEAgc3RydWN0IGludGVsX3Nkdm8gewo+ID4gPiAgCSAqLwo+ ID4gPiAgCXVpbnQxNl90IGhvdHBsdWdfYWN0aXZlOwo+ID4gPiAgCj4gPiA+IC0JLyoqCj4gPiA+ IC0JICogVGhpcyBpcyBzZXQgaWYgd2UncmUgZ29pbmcgdG8gdHJlYXQgdGhlIGRldmljZSBhcyBU Vi1vdXQuCj4gPiA+IC0JICoKPiA+ID4gLQkgKiBXaGlsZSB3ZSBoYXZlIHRoZXNlIG5pY2UgZnJp ZW5kbHkgZmxhZ3MgZm9yIG91dHB1dCB0eXBlcyB0aGF0IG91Z2h0Cj4gPiA+IC0JICogdG8gZGVj aWRlIHRoaXMgZm9yIHVzLCB0aGUgUy1WaWRlbyBvdXRwdXQgb24gb3VyIEhETUkrUy1WaWRlbyBj YXJkCj4gPiA+IC0JICogc2hvd3MgdXAgYXMgUkdCMSAoVkdBKS4KPiA+ID4gLQkgKi8KPiA+ID4g LQlib29sIGlzX3R2Owo+ID4gPiAtCj4gPiA+ICAJZW51bSBwb3J0IHBvcnQ7Cj4gPiA+ICAKPiA+ ID4gLQkvKioKPiA+ID4gLQkgKiBUaGlzIGlzIHNldCBpZiB3ZSB0cmVhdCB0aGUgZGV2aWNlIGFz IEhETUksIGluc3RlYWQgb2YgRFZJLgo+ID4gPiAtCSAqLwo+ID4gPiAtCWJvb2wgaXNfaGRtaTsK PiA+ID4gIAlib29sIGhhc19oZG1pX21vbml0b3I7Cj4gPiA+ICAJYm9vbCBoYXNfaGRtaV9hdWRp bzsKPiA+ID4gIAlib29sIHJnYl9xdWFudF9yYW5nZV9zZWxlY3RhYmxlOwo+ID4gPiAgCj4gPiA+ IC0JLyoqCj4gPiA+IC0JICogVGhpcyBpcyBzZXQgaWYgd2UgZGV0ZWN0IG91dHB1dCBvZiBzZHZv IGRldmljZSBhcyBMVkRTIGFuZAo+ID4gPiAtCSAqIGhhdmUgYSB2YWxpZCBmaXhlZCBtb2RlIHRv IHVzZSB3aXRoIHRoZSBwYW5lbC4KPiA+ID4gLQkgKi8KPiA+ID4gLQlib29sIGlzX2x2ZHM7Cj4g PiA+IC0KPiA+ID4gIAkvKioKPiA+ID4gIAkgKiBUaGlzIGlzIHNkdm8gZml4ZWQgcGFubmVsIG1v ZGUgcG9pbnRlcgo+ID4gPiAgCSAqLwo+ID4gPiBAQCAtMTcyLDYgKzE1MywxMSBAQCBzdHJ1Y3Qg aW50ZWxfc2R2b19jb25uZWN0b3Igewo+ID4gPiAgCj4gPiA+ICAJLyogdGhpcyBpcyB0byBnZXQg dGhlIHJhbmdlIG9mIG1hcmdpbi4qLwo+ID4gPiAgCXUzMiBtYXhfaHNjYW4sIG1heF92c2NhbjsK PiA+ID4gKwo+ID4gPiArCS8qKgo+ID4gPiArCSAqIFRoaXMgaXMgc2V0IGlmIHdlIHRyZWF0IHRo ZSBkZXZpY2UgYXMgSERNSSwgaW5zdGVhZCBvZiBEVkkuCj4gPiA+ICsJICovCj4gPiA+ICsJYm9v bCBpc19oZG1pOwo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiAgc3RydWN0IGludGVsX3Nkdm9fY29u bmVjdG9yX3N0YXRlIHsKPiA+ID4gQEAgLTc2Niw2ICs3NTIsNyBAQCBzdGF0aWMgYm9vbCBpbnRl bF9zZHZvX2dldF9pbnB1dF90aW1pbmcoc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8sCj4g PiA+ICAKPiA+ID4gIHN0YXRpYyBib29sCj4gPiA+ICBpbnRlbF9zZHZvX2NyZWF0ZV9wcmVmZXJy ZWRfaW5wdXRfdGltaW5nKHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLAo+ID4gPiArCQkJ CQkgc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yICppbnRlbF9zZHZvX2Nvbm5lY3RvciwKPiA+ ID4gIAkJCQkJIHVpbnQxNl90IGNsb2NrLAo+ID4gPiAgCQkJCQkgdWludDE2X3Qgd2lkdGgsCj4g PiA+ICAJCQkJCSB1aW50MTZfdCBoZWlnaHQpCj4gPiA+IEBAIC03NzgsNyArNzY1LDcgQEAgaW50 ZWxfc2R2b19jcmVhdGVfcHJlZmVycmVkX2lucHV0X3RpbWluZyhzdHJ1Y3QgaW50ZWxfc2R2byAq aW50ZWxfc2R2bywKPiA+ID4gIAlhcmdzLmhlaWdodCA9IGhlaWdodDsKPiA+ID4gIAlhcmdzLmlu dGVybGFjZSA9IDA7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoaW50ZWxfc2R2by0+aXNfbHZkcyAmJgo+ ID4gPiArCWlmIChJU19MVkRTKGludGVsX3Nkdm9fY29ubmVjdG9yKSAmJgo+ID4gPiAgCSAgIChp bnRlbF9zZHZvLT5zZHZvX2x2ZHNfZml4ZWRfbW9kZS0+aGRpc3BsYXkgIT0gd2lkdGggfHwKPiA+ ID4gIAkgICAgaW50ZWxfc2R2by0+c2R2b19sdmRzX2ZpeGVkX21vZGUtPnZkaXNwbGF5ICE9IGhl aWdodCkpCj4gPiA+ICAJCWFyZ3Muc2NhbGVkID0gMTsKPiA+ID4gQEAgLTEwNjcsNiArMTA1NCw3 IEBAIGludGVsX3Nkdm9fc2V0X291dHB1dF90aW1pbmdzX2Zyb21fbW9kZShzdHJ1Y3QgaW50ZWxf c2R2byAqaW50ZWxfc2R2bywKPiA+ID4gICAqLwo+ID4gPiAgc3RhdGljIGJvb2wKPiA+ID4gIGlu dGVsX3Nkdm9fZ2V0X3ByZWZlcnJlZF9pbnB1dF9tb2RlKHN0cnVjdCBpbnRlbF9zZHZvICppbnRl bF9zZHZvLAo+ID4gPiArCQkJCSAgICBzdHJ1Y3QgaW50ZWxfc2R2b19jb25uZWN0b3IgKmludGVs X3Nkdm9fY29ubmVjdG9yLAo+ID4gPiAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSwKPiA+ID4gIAkJCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVz dGVkX21vZGUpCj4gPiA+ICB7Cj4gPiA+IEBAIC0xMDc3LDYgKzEwNjUsNyBAQCBpbnRlbF9zZHZv X2dldF9wcmVmZXJyZWRfaW5wdXRfbW9kZShzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2bywK PiA+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gPiAgCj4gPiA+ICAJaWYgKCFpbnRlbF9zZHZvX2Ny ZWF0ZV9wcmVmZXJyZWRfaW5wdXRfdGltaW5nKGludGVsX3Nkdm8sCj4gPiA+ICsJCQkJCQkgICAg ICBpbnRlbF9zZHZvX2Nvbm5lY3RvciwKPiA+ID4gIAkJCQkJCSAgICAgIG1vZGUtPmNsb2NrIC8g MTAsCj4gPiA+ICAJCQkJCQkgICAgICBtb2RlLT5oZGlzcGxheSwKPiA+ID4gIAkJCQkJCSAgICAg IG1vZGUtPnZkaXNwbGF5KSkKPiA+ID4gQEAgLTExMjcsNiArMTExNiw4IEBAIHN0YXRpYyBib29s IGludGVsX3Nkdm9fY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gPiA+ICAJc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8gPSB0b19zZHZvKGVuY29kZXIp Owo+ID4gPiAgCXN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0ZSAqaW50ZWxfc2R2b19z dGF0ZSA9Cj4gPiA+ICAJCXRvX2ludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlKGNvbm5fc3RhdGUp Owo+ID4gPiArCXN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAqaW50ZWxfc2R2b19jb25uZWN0 b3IgPQo+ID4gPiArCQl0b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0 b3IpOwo+ID4gPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBp cGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gPiA+ICAJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUgPSAmcGlwZV9jb25maWctPmJhc2UubW9kZTsKPiA+ID4gIAo+ID4gPiBAQCAt MTE0MiwyMCArMTEzMywyMiBAQCBzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gPiAgCSAqIHRpbWluZ3MsIGV2ZW4g dGhvdWdoIHRoaXMgaXNuJ3QgcmVhbGx5IHRoZSByaWdodCBwbGFjZSBpbgo+ID4gPiAgCSAqIHRo ZSBzZXF1ZW5jZSB0byBkbyBpdC4gT2ggd2VsbC4KPiA+ID4gIAkgKi8KPiA+ID4gLQlpZiAoaW50 ZWxfc2R2by0+aXNfdHYpIHsKPiA+ID4gKwlpZiAoSVNfVFYoaW50ZWxfc2R2b19jb25uZWN0b3Ip KSB7Cj4gPiA+ICAJCWlmICghaW50ZWxfc2R2b19zZXRfb3V0cHV0X3RpbWluZ3NfZnJvbV9tb2Rl KGludGVsX3Nkdm8sIG1vZGUpKQo+ID4gPiAgCQkJcmV0dXJuIGZhbHNlOwo+ID4gPiAgCj4gPiA+ ICAJCSh2b2lkKSBpbnRlbF9zZHZvX2dldF9wcmVmZXJyZWRfaW5wdXRfbW9kZShpbnRlbF9zZHZv LAo+ID4gPiArCQkJCQkJCSAgIGludGVsX3Nkdm9fY29ubmVjdG9yLAo+ID4gPiAgCQkJCQkJCSAg IG1vZGUsCj4gPiA+ICAJCQkJCQkJICAgYWRqdXN0ZWRfbW9kZSk7Cj4gPiA+ICAJCXBpcGVfY29u ZmlnLT5zZHZvX3R2X2Nsb2NrID0gdHJ1ZTsKPiA+ID4gLQl9IGVsc2UgaWYgKGludGVsX3Nkdm8t PmlzX2x2ZHMpIHsKPiA+ID4gKwl9IGVsc2UgaWYgKElTX0xWRFMoaW50ZWxfc2R2b19jb25uZWN0 b3IpKSB7Cj4gPiA+ICAJCWlmICghaW50ZWxfc2R2b19zZXRfb3V0cHV0X3RpbWluZ3NfZnJvbV9t b2RlKGludGVsX3Nkdm8sCj4gPiA+ICAJCQkJCQkJICAgICBpbnRlbF9zZHZvLT5zZHZvX2x2ZHNf Zml4ZWRfbW9kZSkpCj4gPiA+ICAJCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICAKPiA+ID4gIAkJKHZv aWQpIGludGVsX3Nkdm9fZ2V0X3ByZWZlcnJlZF9pbnB1dF9tb2RlKGludGVsX3Nkdm8sCj4gPiA+ ICsJCQkJCQkJICAgaW50ZWxfc2R2b19jb25uZWN0b3IsCj4gPiA+ICAJCQkJCQkJICAgbW9kZSwK PiA+ID4gIAkJCQkJCQkgICBhZGp1c3RlZF9tb2RlKTsKPiA+ID4gIAl9Cj4gPiA+IEBAIC0xMTk0 LDExICsxMTg3LDExIEBAIHN0YXRpYyBib29sIGludGVsX3Nkdm9fY29tcHV0ZV9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+ICAJLyog Q2xvY2sgY29tcHV0YXRpb24gbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHBpeGVsIG11bHRpcGxpZXIu ICovCj4gPiA+IC0JaWYgKGludGVsX3Nkdm8tPmlzX3R2KQo+ID4gPiArCWlmIChJU19UVihpbnRl bF9zZHZvX2Nvbm5lY3RvcikpCj4gPiA+ICAJCWk5eHhfYWRqdXN0X3Nkdm9fdHZfY2xvY2socGlw ZV9jb25maWcpOwo+ID4gPiAgCj4gPiA+ICAJLyogU2V0IHVzZXIgc2VsZWN0ZWQgUEFSIHRvIGlu Y29taW5nIG1vZGUncyBtZW1iZXIgKi8KPiA+ID4gLQlpZiAoaW50ZWxfc2R2by0+aXNfaGRtaSkK PiA+ID4gKwlpZiAoaW50ZWxfc2R2b19jb25uZWN0b3ItPmlzX2hkbWkpCj4gPiA+ICAJCWFkanVz dGVkX21vZGUtPnBpY3R1cmVfYXNwZWN0X3JhdGlvID0gY29ubl9zdGF0ZS0+cGljdHVyZV9hc3Bl Y3RfcmF0aW87Cj4gPiA+ICAKPiA+ID4gIAlyZXR1cm4gdHJ1ZTsKPiA+ID4gQEAgLTEyNzUsNiAr MTI2OCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiA+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4g PiA+ICAJY29uc3Qgc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlICpzZHZvX3N0YXRl ID0KPiA+ID4gIAkJdG9faW50ZWxfc2R2b19jb25uZWN0b3Jfc3RhdGUoY29ubl9zdGF0ZSk7Cj4g PiA+ICsJY29uc3Qgc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yICppbnRlbF9zZHZvX2Nvbm5l Y3RvciA9Cj4gPiA+ICsJCXRvX2ludGVsX3Nkdm9fY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5l Y3Rvcik7Cj4gPiA+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0 Y19zdGF0ZS0+YmFzZS5tb2RlOwo+ID4gPiAgCXN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZv ID0gdG9fc2R2byhpbnRlbF9lbmNvZGVyKTsKPiA+ID4gIAl1MzIgc2R2b3g7Cj4gPiA+IEBAIC0x MzA0LDcgKzEyOTksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX3ByZV9lbmFibGUoc3RydWN0 IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gPiA+ICAJCXJldHVybjsKPiA+ID4gIAo+ ID4gPiAgCS8qIGx2ZHMgaGFzIGEgc3BlY2lhbCBmaXhlZCBvdXRwdXQgdGltaW5nLiAqLwo+ID4g PiAtCWlmIChpbnRlbF9zZHZvLT5pc19sdmRzKQo+ID4gPiArCWlmIChJU19MVkRTKGludGVsX3Nk dm9fY29ubmVjdG9yKSkKPiA+ID4gIAkJaW50ZWxfc2R2b19nZXRfZHRkX2Zyb21fbW9kZSgmb3V0 cHV0X2R0ZCwKPiA+ID4gIAkJCQkJICAgICBpbnRlbF9zZHZvLT5zZHZvX2x2ZHNfZml4ZWRfbW9k ZSk7Cj4gPiA+ICAJZWxzZQo+ID4gPiBAQCAtMTMyNSwxMyArMTMyMCwxMyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9zZHZvX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29k ZXIsCj4gPiA+ICAJfSBlbHNlCj4gPiA+ICAJCWludGVsX3Nkdm9fc2V0X2VuY29kZShpbnRlbF9z ZHZvLCBTRFZPX0VOQ09ERV9EVkkpOwo+ID4gPiAgCj4gPiA+IC0JaWYgKGludGVsX3Nkdm8tPmlz X3R2ICYmCj4gPiA+ICsJaWYgKElTX1RWKGludGVsX3Nkdm9fY29ubmVjdG9yKSAmJgo+ID4gPiAg CSAgICAhaW50ZWxfc2R2b19zZXRfdHZfZm9ybWF0KGludGVsX3Nkdm8sIGNvbm5fc3RhdGUpKQo+ ID4gPiAgCQlyZXR1cm47Cj4gPiA+ICAKPiA+ID4gIAlpbnRlbF9zZHZvX2dldF9kdGRfZnJvbV9t b2RlKCZpbnB1dF9kdGQsIGFkanVzdGVkX21vZGUpOwo+ID4gPiAgCj4gPiA+IC0JaWYgKGludGVs X3Nkdm8tPmlzX3R2IHx8IGludGVsX3Nkdm8tPmlzX2x2ZHMpCj4gPiA+ICsJaWYgKElTX1RWKGlu dGVsX3Nkdm9fY29ubmVjdG9yKSB8fCBJU19MVkRTKGludGVsX3Nkdm9fY29ubmVjdG9yKSkKPiA+ ID4gIAkJaW5wdXRfZHRkLnBhcnQyLnNkdm9fZmxhZ3MgPSBpbnRlbF9zZHZvLT5kdGRfc2R2b19m bGFnczsKPiA+ID4gIAlpZiAoIWludGVsX3Nkdm9fc2V0X2lucHV0X3RpbWluZyhpbnRlbF9zZHZv LCAmaW5wdXRfZHRkKSkKPiA+ID4gIAkJRFJNX0lORk8oIlNldHRpbmcgaW5wdXQgdGltaW5ncyBv biAlcyBmYWlsZWRcbiIsCj4gPiA+IEBAIC0xNjMwLDYgKzE2MjUsOCBAQCBpbnRlbF9zZHZvX21v ZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gIAkJICAgICAg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGlu dGVsX3Nkdm8gKmludGVsX3Nkdm8gPSBpbnRlbF9hdHRhY2hlZF9zZHZvKGNvbm5lY3Rvcik7Cj4g PiA+ICsJc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yICppbnRlbF9zZHZvX2Nvbm5lY3RvciA9 Cj4gPiA+ICsJCXRvX2ludGVsX3Nkdm9fY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiA+ICAJaW50 IG1heF9kb3RjbGsgPSB0b19pOTE1KGNvbm5lY3Rvci0+ZGV2KS0+bWF4X2RvdGNsa19mcmVxOwo+ ID4gPiAgCj4gPiA+ICAJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxTQ0FOKQo+ ID4gPiBAQCAtMTY0NCw3ICsxNjQxLDcgQEAgaW50ZWxfc2R2b19tb2RlX3ZhbGlkKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ICAJaWYgKG1vZGUtPmNsb2NrID4gbWF4X2Rv dGNsaykKPiA+ID4gIAkJcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsKPiA+ID4gIAo+ID4gPiAtCWlm IChpbnRlbF9zZHZvLT5pc19sdmRzKSB7Cj4gPiA+ICsJaWYgKElTX0xWRFMoaW50ZWxfc2R2b19j b25uZWN0b3IpKSB7Cj4gPiA+ICAJCWlmIChtb2RlLT5oZGlzcGxheSA+IGludGVsX3Nkdm8tPnNk dm9fbHZkc19maXhlZF9tb2RlLT5oZGlzcGxheSkKPiA+ID4gIAkJCXJldHVybiBNT0RFX1BBTkVM Owo+ID4gPiAgCj4gPiA+IEBAIC0xNzU5LDYgKzE3NTYsOCBAQCBzdGF0aWMgZW51bSBkcm1fY29u bmVjdG9yX3N0YXR1cwo+ID4gPiAgaW50ZWxfc2R2b190bWRzX3NpbmtfZGV0ZWN0KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGludGVsX3Nk dm8gKmludGVsX3Nkdm8gPSBpbnRlbF9hdHRhY2hlZF9zZHZvKGNvbm5lY3Rvcik7Cj4gPiA+ICsJ c3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yICppbnRlbF9zZHZvX2Nvbm5lY3RvciA9Cj4gPiA+ ICsJCXRvX2ludGVsX3Nkdm9fY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiA+ICAJZW51bSBkcm1f Y29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7Cj4gPiA+ICAJc3RydWN0IGVkaWQgKmVkaWQ7Cj4gPiA+ ICAKPiA+ID4gQEAgLTE3OTcsNyArMTc5Niw3IEBAIGludGVsX3Nkdm9fdG1kc19zaW5rX2RldGVj dChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPiAgCQkvKiBEREMgYnVzIGlz IHNoYXJlZCwgbWF0Y2ggRURJRCB0byBjb25uZWN0b3IgdHlwZSAqLwo+ID4gPiAgCQlpZiAoZWRp ZC0+aW5wdXQgJiBEUk1fRURJRF9JTlBVVF9ESUdJVEFMKSB7Cj4gPiA+ICAJCQlzdGF0dXMgPSBj b25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKPiA+ID4gLQkJCWlmIChpbnRlbF9zZHZvLT5pc19o ZG1pKSB7Cj4gPiA+ICsJCQlpZiAoaW50ZWxfc2R2b19jb25uZWN0b3ItPmlzX2hkbWkpIHsKPiA+ ID4gIAkJCQlpbnRlbF9zZHZvLT5oYXNfaGRtaV9tb25pdG9yID0gZHJtX2RldGVjdF9oZG1pX21v bml0b3IoZWRpZCk7Cj4gPiA+ICAJCQkJaW50ZWxfc2R2by0+aGFzX2hkbWlfYXVkaW8gPSBkcm1f ZGV0ZWN0X21vbml0b3JfYXVkaW8oZWRpZCk7Cj4gPiA+ICAJCQkJaW50ZWxfc2R2by0+cmdiX3F1 YW50X3JhbmdlX3NlbGVjdGFibGUgPQo+ID4gPiBAQCAtMTg3NSwxNyArMTg3NCw2IEBAIGludGVs X3Nkdm9fZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2Up Cj4gPiA+ICAJCQlyZXQgPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKPiA+ID4gIAl9Cj4g PiA+ICAKPiA+ID4gLQkvKiBNYXkgdXBkYXRlIGVuY29kZXIgZmxhZyBmb3IgbGlrZSBjbG9jayBm b3IgU0RWTyBUViwgZXRjLiovCj4gPiA+IC0JaWYgKHJldCA9PSBjb25uZWN0b3Jfc3RhdHVzX2Nv bm5lY3RlZCkgewo+ID4gPiAtCQlpbnRlbF9zZHZvLT5pc190diA9IGZhbHNlOwo+ID4gPiAtCQlp bnRlbF9zZHZvLT5pc19sdmRzID0gZmFsc2U7Cj4gPiA+IC0KPiA+ID4gLQkJaWYgKHJlc3BvbnNl ICYgU0RWT19UVl9NQVNLKQo+ID4gPiAtCQkJaW50ZWxfc2R2by0+aXNfdHYgPSB0cnVlOwo+ID4g PiAtCQlpZiAocmVzcG9uc2UgJiBTRFZPX0xWRFNfTUFTSykKPiA+ID4gLQkJCWludGVsX3Nkdm8t PmlzX2x2ZHMgPSBpbnRlbF9zZHZvLT5zZHZvX2x2ZHNfZml4ZWRfbW9kZSAhPSBOVUxMOwo+ID4g PiAtCX0KPiA+ID4gLQo+ID4gPiAgCXJldHVybiByZXQ7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4g QEAgLTIwNTQsMTYgKzIwNDIsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX2dldF9sdmRzX21v ZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiA+ICAJICogYXJyYW5nZWQg aW4gcHJpb3JpdHkgb3JkZXIuCj4gPiA+ICAJICovCj4gPiA+ICAJaW50ZWxfZGRjX2dldF9tb2Rl cyhjb25uZWN0b3IsICZpbnRlbF9zZHZvLT5kZGMpOwo+ID4gPiAtCj4gPiA+IC0JbGlzdF9mb3Jf ZWFjaF9lbnRyeShuZXdtb2RlLCAmY29ubmVjdG9yLT5wcm9iZWRfbW9kZXMsIGhlYWQpIHsKPiA+ ID4gLQkJaWYgKG5ld21vZGUtPnR5cGUgJiBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRCkgewo+ID4g PiAtCQkJaW50ZWxfc2R2by0+c2R2b19sdmRzX2ZpeGVkX21vZGUgPQo+ID4gPiAtCQkJCWRybV9t b2RlX2R1cGxpY2F0ZShjb25uZWN0b3ItPmRldiwgbmV3bW9kZSk7Cj4gPiA+IC0KPiA+ID4gLQkJ CWludGVsX3Nkdm8tPmlzX2x2ZHMgPSB0cnVlOwo+ID4gPiAtCQkJYnJlYWs7Cj4gPiA+IC0JCX0K PiA+ID4gLQl9Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gIHN0YXRpYyBpbnQgaW50ZWxfc2R2b19n ZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gQEAgLTI1NTUs NyArMjUzMyw3IEBAIGludGVsX3Nkdm9fZHZpX2luaXQoc3RydWN0IGludGVsX3Nkdm8gKmludGVs X3Nkdm8sIGludCBkZXZpY2UpCj4gPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCAm Jgo+ID4gPiAgCSAgICBpbnRlbF9zZHZvX2lzX2hkbWlfY29ubmVjdG9yKGludGVsX3Nkdm8sIGRl dmljZSkpIHsKPiA+ID4gIAkJY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9IERSTV9NT0RFX0NP Tk5FQ1RPUl9IRE1JQTsKPiA+ID4gLQkJaW50ZWxfc2R2by0+aXNfaGRtaSA9IHRydWU7Cj4gPiA+ ICsJCWludGVsX3Nkdm9fY29ubmVjdG9yLT5pc19oZG1pID0gdHJ1ZTsKPiA+ID4gIAl9Cj4gPiA+ ICAKPiA+ID4gIAlpZiAoaW50ZWxfc2R2b19jb25uZWN0b3JfaW5pdChpbnRlbF9zZHZvX2Nvbm5l Y3RvciwgaW50ZWxfc2R2bykgPCAwKSB7Cj4gPiA+IEBAIC0yNTYzLDcgKzI1NDEsNyBAQCBpbnRl bF9zZHZvX2R2aV9pbml0KHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLCBpbnQgZGV2aWNl KQo+ID4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+IC0JaWYgKGlu dGVsX3Nkdm8tPmlzX2hkbWkpCj4gPiA+ICsJaWYgKGludGVsX3Nkdm9fY29ubmVjdG9yLT5pc19o ZG1pKQo+ID4gPiAgCQlpbnRlbF9zZHZvX2FkZF9oZG1pX3Byb3BlcnRpZXMoaW50ZWxfc2R2bywg aW50ZWxfc2R2b19jb25uZWN0b3IpOwo+ID4gPiAgCj4gPiA+ICAJcmV0dXJuIHRydWU7Cj4gPiA+ IEBAIC0yNTkxLDggKzI1NjksNiBAQCBpbnRlbF9zZHZvX3R2X2luaXQoc3RydWN0IGludGVsX3Nk dm8gKmludGVsX3Nkdm8sIGludCB0eXBlKQo+ID4gPiAgCWludGVsX3Nkdm8tPmNvbnRyb2xsZWRf b3V0cHV0IHw9IHR5cGU7Cj4gPiA+ICAJaW50ZWxfc2R2b19jb25uZWN0b3ItPm91dHB1dF9mbGFn ID0gdHlwZTsKPiA+ID4gIAo+ID4gPiAtCWludGVsX3Nkdm8tPmlzX3R2ID0gdHJ1ZTsKPiA+ID4g LQo+ID4gPiAgCWlmIChpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9pbml0KGludGVsX3Nkdm9fY29ubmVj dG9yLCBpbnRlbF9zZHZvKSA8IDApIHsKPiA+ID4gIAkJa2ZyZWUoaW50ZWxfc2R2b19jb25uZWN0 b3IpOwo+ID4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiA+IEBAIC0yNjU0LDYgKzI2MzAsNyBAQCBp bnRlbF9zZHZvX2x2ZHNfaW5pdChzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2bywgaW50IGRl dmljZSkKPiA+ID4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ID4gPiAgCXN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKPiA+ID4gIAlzdHJ1Y3QgaW50 ZWxfc2R2b19jb25uZWN0b3IgKmludGVsX3Nkdm9fY29ubmVjdG9yOwo+ID4gPiArCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlOwo+ID4gPiAgCj4gPiA+ICAJRFJNX0RFQlVHX0tNUygiaW5p dGlhbGlzaW5nIExWRFMgZGV2aWNlICVkXG4iLCBkZXZpY2UpOwo+ID4gPiAgCj4gPiA+IEBAIC0y NjgyLDYgKzI2NTksMTkgQEAgaW50ZWxfc2R2b19sdmRzX2luaXQoc3RydWN0IGludGVsX3Nkdm8g KmludGVsX3Nkdm8sIGludCBkZXZpY2UpCj4gPiA+ICAJaWYgKCFpbnRlbF9zZHZvX2NyZWF0ZV9l bmhhbmNlX3Byb3BlcnR5KGludGVsX3Nkdm8sIGludGVsX3Nkdm9fY29ubmVjdG9yKSkKPiA+ID4g IAkJZ290byBlcnI7Cj4gPiA+ICAKPiA+ID4gKwlpbnRlbF9zZHZvX2dldF9sdmRzX21vZGVzKGNv bm5lY3Rvcik7Cj4gPiA+ICsKPiA+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1vZGUsICZjb25u ZWN0b3ItPnByb2JlZF9tb2RlcywgaGVhZCkgewo+ID4gPiArCQlpZiAobW9kZS0+dHlwZSAmIERS TV9NT0RFX1RZUEVfUFJFRkVSUkVEKSB7Cj4gPiA+ICsJCQlpbnRlbF9zZHZvLT5zZHZvX2x2ZHNf Zml4ZWRfbW9kZSA9Cj4gPiA+ICsJCQkJZHJtX21vZGVfZHVwbGljYXRlKGNvbm5lY3Rvci0+ZGV2 LCBtb2RlKTsKPiA+ID4gKwkJCWJyZWFrOwo+ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4gPiArCj4g PiA+ICsJaWYgKCFpbnRlbF9zZHZvLT5zZHZvX2x2ZHNfZml4ZWRfbW9kZSkKPiA+ID4gKwkJZ290 byBlcnI7Cj4gPiA+ICsKPiA+ID4gIAlyZXR1cm4gdHJ1ZTsKPiA+ID4gIAo+ID4gPiAgZXJyOgo+ ID4gPiBAQCAtMjY5Miw5ICsyNjgyLDYgQEAgaW50ZWxfc2R2b19sdmRzX2luaXQoc3RydWN0IGlu dGVsX3Nkdm8gKmludGVsX3Nkdm8sIGludCBkZXZpY2UpCj4gPiA+ICBzdGF0aWMgYm9vbAo+ID4g PiAgaW50ZWxfc2R2b19vdXRwdXRfc2V0dXAoc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8s IHVpbnQxNl90IGZsYWdzKQo+ID4gPiAgewo+ID4gPiAtCWludGVsX3Nkdm8tPmlzX3R2ID0gZmFs c2U7Cj4gPiA+IC0JaW50ZWxfc2R2by0+aXNfbHZkcyA9IGZhbHNlOwo+ID4gPiAtCj4gPiA+ICAJ LyogU0RWTyByZXF1aXJlcyBYWFgxIGZ1bmN0aW9uIG1heSBub3QgZXhpc3QgdW5sZXNzIGl0IGhh cyBYWFgwIGZ1bmN0aW9uLiovCj4gPiA+ICAKPiA+ID4gIAlpZiAoZmxhZ3MgJiBTRFZPX09VVFBV VF9UTURTMCkKPiA+ID4gLS0gCj4gPiA+IDIuMTYuNAo+ID4gPiAKPiA+ID4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiA+IGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCj4g LS0gCj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==