From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 10/15] drm/i915: Split the problematic dual-role DDI encoder into two encoders Date: Thu, 10 Dec 2015 16:10:34 +0200 Message-ID: <20151210141034.GU4437@intel.com> References: <1449597590-6971-1-git-send-email-ville.syrjala@linux.intel.com> <1449597590-6971-11-git-send-email-ville.syrjala@linux.intel.com> <20151210134712.GH20822@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 0DAC46EA0B for ; Thu, 10 Dec 2015 06:10:44 -0800 (PST) Content-Disposition: inline In-Reply-To: <20151210134712.GH20822@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBEZWMgMTAsIDIwMTUgYXQgMDI6NDc6MTJQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIERlYyAwOCwgMjAxNSBhdCAwNzo1OTo0NVBNICswMjAwLCB2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbSB3cm90ZToKPiA+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiAKPiA+IEVsaW1pbmF0ZSB0aGUgdHJv dWJsZXNvbWUgcm9sZSBzd2l0Y2hpbmcgRERJIGVuY29kZXIsIGFuZCBqdXN0IHJlZ2lzdGVyCj4g PiBhIHNlcGFyYXRlIGVuY29kZXIgZm9yIGVhY2ggcm9sZSAoRFAgYW5kIEhETUkpLgo+ID4gCj4g PiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgo+IAo+IENhdmVhdCBhYm91dCBtYXhfbGFuZXMgYW5kIHByZS1EREkgcGxhdGZvcm1z IHN0aWxsIGFwcGx5Lgo+IAo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGRpLmMgICAgICB8IDIzMiArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICB8ICAxOCAtLS0KPiA+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgIHwgIDIzICstLS0KPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgIHwgICAzICstCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICB8ICAgMyArCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfb3ByZWdpb24uYyB8ICAgMSAtCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCAxODAgaW5z ZXJ0aW9ucygrKSwgMTAwIGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k ZGkuYwo+ID4gaW5kZXggMDc0MTIxZWZiMjY1Li41ZjAwOGYwZmRjMTMgMTAwNjQ0Cj4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IEBAIC0zMTgsNyArMzE4LDYgQEAgc3RhdGljIHZvaWQg ZGRpX2dldF9lbmNvZGVyX3BvcnQoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIs Cj4gPiAgCWNhc2UgSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUOgo+ID4gIAljYXNlIElOVEVMX09V VFBVVF9FRFA6Cj4gPiAgCWNhc2UgSU5URUxfT1VUUFVUX0hETUk6Cj4gPiAtCWNhc2UgSU5URUxf T1VUUFVUX1VOS05PV046Cj4gPiAgCQkqZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoZW5jb2Rl cik7Cj4gPiAgCQkqcG9ydCA9ICgqZGlnX3BvcnQpLT5wb3J0Owo+ID4gIAkJYnJlYWs7Cj4gPiBA QCAtMTk0MiwxOSArMTk0MSwxOSBAQCBib29sIGludGVsX2RkaV9jb25uZWN0b3JfZ2V0X2h3X3N0 YXRlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiA+ICAJc3dpdGNo ICh0bXAgJiBUUkFOU19ERElfTU9ERV9TRUxFQ1RfTUFTSykgewo+ID4gIAljYXNlIFRSQU5TX0RE SV9NT0RFX1NFTEVDVF9IRE1JOgo+ID4gIAljYXNlIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EVkk6 Cj4gPiAtCQlyZXR1cm4gKHR5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX0hETUlBKTsKPiA+ICsJ CXJldHVybiB0eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQTsKPiA+ICAKPiA+ICAJY2Fz ZSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFBfU1NUOgo+ID4gLQkJaWYgKHR5cGUgPT0gRFJNX01P REVfQ09OTkVDVE9SX2VEUCkKPiA+IC0JCQlyZXR1cm4gdHJ1ZTsKPiA+IC0JCXJldHVybiAodHlw ZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpOwo+ID4gKwkJcmV0dXJuIHR5cGUg PT0gRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0IHx8Cj4gPiArCQkJdHlwZSA9PSBEUk1f TU9ERV9DT05ORUNUT1JfZURQOwo+ID4gKwo+ID4gIAljYXNlIFRSQU5TX0RESV9NT0RFX1NFTEVD VF9EUF9NU1Q6Cj4gPiAgCQkvKiBpZiB0aGUgdHJhbnNjb2RlciBpcyBpbiBNU1Qgc3RhdGUgdGhl bgo+ID4gIAkJICogY29ubmVjdG9yIGlzbid0IGNvbm5lY3RlZCAqLwo+ID4gIAkJcmV0dXJuIGZh bHNlOwo+ID4gIAo+ID4gIAljYXNlIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9GREk6Cj4gPiAtCQly ZXR1cm4gKHR5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX1ZHQSk7Cj4gPiArCQlyZXR1cm4gdHlw ZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfVkdBOwo+ID4gIAo+ID4gIAlkZWZhdWx0Ogo+ID4gIAkJ cmV0dXJuIGZhbHNlOwo+ID4gQEAgLTE5ODEsOCArMTk4MCwyMyBAQCBib29sIGludGVsX2RkaV9n ZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCQlyZXR1cm4g ZmFsc2U7Cj4gPiAgCj4gPiAgCWlmIChwb3J0ID09IFBPUlRfQSkgewo+ID4gKwkJV0FSTl9PTihl bmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApOwo+ID4gKwo+ID4gIAkJdG1wID0gSTkx NV9SRUFEKFRSQU5TX0RESV9GVU5DX0NUTChUUkFOU0NPREVSX0VEUCkpOwo+ID4gIAo+ID4gKwkJ aWYgKCh0bXAgJiBUUkFOU19ERElfRlVOQ19FTkFCTEUpID09IDApCj4gPiArCQkJZ290byBvdXQ7 Cj4gPiArCj4gPiArCQlzd2l0Y2ggKHRtcCAmIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9NQVNLKSB7 Cj4gPiArCQljYXNlIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EUF9TU1Q6Cj4gPiArCQkJYnJlYWs7 Cj4gPiArCQlkZWZhdWx0Ogo+ID4gKwkJCVdBUk4oMSwKPiA+ICsJCQkgICAgICJCYWQgdHJhbnNj b2RlciBFRFAgRERJIG1vZGUgMHglMDh4IGZvciBwb3J0ICVjXG4iLAo+ID4gKwkJCSAgICAgdG1w LCBwb3J0X25hbWUocG9ydCkpOwo+ID4gKwkJCXJldHVybiBmYWxzZTsKPiA+ICsJCX0KPiA+ICsK PiA+ICAJCXN3aXRjaCAodG1wICYgVFJBTlNfRERJX0VEUF9JTlBVVF9NQVNLKSB7Cj4gPiAgCQlj YXNlIFRSQU5TX0RESV9FRFBfSU5QVVRfQV9PTjoKPiA+ICAJCWNhc2UgVFJBTlNfRERJX0VEUF9J TlBVVF9BX09OT0ZGOgo+ID4gQEAgLTE5OTQsMjUgKzIwMDgsOTggQEAgYm9vbCBpbnRlbF9kZGlf Z2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJY2FzZSBU UkFOU19ERElfRURQX0lOUFVUX0NfT05PRkY6Cj4gPiAgCQkJKnBpcGUgPSBQSVBFX0M7Cj4gPiAg CQkJYnJlYWs7Cj4gPiArCQlkZWZhdWx0Ogo+ID4gKwkJCVdBUk4oMSwKPiA+ICsJCQkgICAgICJC YWQgdHJhbnNjb2RlciBFRFAgaW5wdXQgc2VsZWN0IDB4JTA4eCBmb3IgcG9ydCAlY1xuIiwKPiA+ ICsJCQkgICAgIHRtcCwgcG9ydF9uYW1lKHBvcnQpKTsKPiA+ICsJCQlyZXR1cm4gZmFsc2U7Cj4g PiAgCQl9Cj4gPiAgCj4gPiAgCQlyZXR1cm4gdHJ1ZTsKPiA+ICAJfSBlbHNlIHsKPiA+ICsJCWlu dCBudW1fbXN0X3RyYW5zY29kZXJzID0gMDsKPiA+ICsJCWludCBudW1fc3N0X3RyYW5zY29kZXJz ID0gMDsKPiA+ICsJCWludCBudW1fZmRpX3RyYW5zY29kZXJzID0gMDsKPiA+ICsJCWludCBudW1f aGRtaV90cmFuc2NvZGVycyA9IDA7Cj4gPiArCQlpbnQgbnVtX3RyYW5zY29kZXJzID0gMDsKPiA+ ICsJCWJvb2wgZW5hYmxlZCA9IGZhbHNlOwo+ID4gKwo+ID4gIAkJZm9yIChpID0gVFJBTlNDT0RF Ul9BOyBpIDw9IFRSQU5TQ09ERVJfQzsgaSsrKSB7Cj4gPiAgCQkJdG1wID0gSTkxNV9SRUFEKFRS QU5TX0RESV9GVU5DX0NUTChpKSk7Cj4gPiAgCj4gPiAtCQkJaWYgKCh0bXAgJiBUUkFOU19ERElf UE9SVF9NQVNLKQo+ID4gLQkJCSAgICA9PSBUUkFOU19ERElfU0VMRUNUX1BPUlQocG9ydCkpIHsK PiA+IC0JCQkJaWYgKCh0bXAgJiBUUkFOU19ERElfTU9ERV9TRUxFQ1RfTUFTSykgPT0gVFJBTlNf RERJX01PREVfU0VMRUNUX0RQX01TVCkKPiA+IC0JCQkJCXJldHVybiBmYWxzZTsKPiA+ICsJCQlp ZiAoKHRtcCAmIFRSQU5TX0RESV9GVU5DX0VOQUJMRSkgPT0gMCkKPiA+ICsJCQkJY29udGludWU7 Cj4gPiArCj4gPiArCQkJaWYgKCh0bXAgJiBUUkFOU19ERElfUE9SVF9NQVNLKSAhPSBUUkFOU19E RElfU0VMRUNUX1BPUlQocG9ydCkpCj4gPiArCQkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJCWlm ICgodG1wICYgVFJBTlNfRERJX01PREVfU0VMRUNUX01BU0spID09IFRSQU5TX0RESV9NT0RFX1NF TEVDVF9EUF9NU1QpIHsKPiA+ICsJCQkJbnVtX21zdF90cmFuc2NvZGVycysrOwo+ID4gKwkJCQlX QVJOX09OKHBvcnQgPT0gUE9SVF9FKTsKPiA+ICsJCQkJY29udGludWU7Cj4gPiArCQkJfQo+ID4g Kwo+ID4gKwo+ID4gKwkJCXN3aXRjaCAodG1wICYgVFJBTlNfRERJX01PREVfU0VMRUNUX01BU0sp IHsKPiA+ICsJCQljYXNlIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EUF9TU1Q6Cj4gPiArCQkJCVdB Uk5fT04ocG9ydCA9PSBQT1JUX0UgJiYgSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDkpOwo+ ID4gKwo+ID4gKwkJCQludW1fc3N0X3RyYW5zY29kZXJzKys7Cj4gPiArCQkJCWlmIChlbmNvZGVy LT50eXBlID09IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCB8fAo+ID4gKwkJCQkgICAgZW5jb2Rl ci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7Cj4gPiArCQkJCQllbmFibGVkID0gdHJ1ZTsK PiA+ICsJCQkJCSpwaXBlID0gaTsKPiA+ICsJCQkJfQo+ID4gKwkJCQlicmVhazsKPiA+ICsJCQlj YXNlIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9IRE1JOgo+ID4gKwkJCWNhc2UgVFJBTlNfRERJX01P REVfU0VMRUNUX0RWSToKPiA+ICsJCQkJV0FSTl9PTihwb3J0ID09IFBPUlRfRSk7Cj4gCj4gSG0s IHByZXZpb3VzIHBhdGNoZXMgbWFkZSBpdCBsb29rIGxpa2UgaGRtaSBvbiBwb3J0IEUgaXMgcG9z c2libGUgLSBhdAo+IGxlYXN0IHlvdSBhZGRlZCBwaWxlcyBvZiBjaGVja3MgdG8gbWFrZSBzdXJl IHdlIGhhdmUgYXQgbGVhc3QgNCBsYW5lcwo+IGV2ZXJ5d2hlcmUuIEFtIEkgbWlzdGFrZW4/CgpE REkgRSBjYW4gb25seSBoYXZlIHR3byBsYW5lcyBhdCBtb3N0LiBTbyBpdCBjYW4ndCBkbyBIRE1J LiBBY3R1YWxseQppdCdzIGRvY3VtZW50ZWQgdGhhdCBpdCBjYW4gb25seSBkbyBGREkgKG9yIFNT VCBvbiBTS0wrKS4gTm93IHRoYXQgSQp0aGluayBhYm91dCBpdCwgSSdtIG5vdCBzdXJlIGFuIGV4 dGVybmFsIERQIHBvcnQgd2l0aCA8IDQgbGFuZXMgaXMKZXZlbiBsZWdhbCwgc28gcGVyaGFwcyBp biBwcmFjdGljZSBpdCBjYW4gb25seSBiZSBlRFAgb3IgRkRJPwoKPiAKPiA+ICsKPiA+ICsJCQkJ bnVtX2hkbWlfdHJhbnNjb2RlcnMrKzsKPiA+ICsJCQkJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5U RUxfT1VUUFVUX0hETUkpIHsKPiA+ICsJCQkJCWVuYWJsZWQgPSB0cnVlOwo+ID4gKwkJCQkJKnBp cGUgPSBpOwo+ID4gKwkJCQl9Cj4gPiArCQkJCWJyZWFrOwo+ID4gKwo+ID4gKwkJCWNhc2UgVFJB TlNfRERJX01PREVfU0VMRUNUX0ZESToKPiA+ICsJCQkJV0FSTl9PTihwb3J0ICE9IFBPUlRfRSB8 fCBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpOwo+ID4gKwo+ID4gKwkJCQludW1fZmRp X3RyYW5zY29kZXJzKys7Cj4gPiArCQkJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBV VF9BTkFMT0cpIHsKPiA+ICsJCQkJCWVuYWJsZWQgPSB0cnVlOwo+ID4gKwkJCQkJKnBpcGUgPSBp Owo+ID4gKwkJCQl9Cj4gPiArCQkJCWJyZWFrOwo+ID4gIAo+ID4gLQkJCQkqcGlwZSA9IGk7Cj4g PiAtCQkJCXJldHVybiB0cnVlOwo+ID4gKwkJCWRlZmF1bHQ6Cj4gPiArCQkJCVdBUk4oMSwgIkJh ZCB0cmFuc2NvZGVyICVjIERESSBtb2RlIDB4JTA4eCBmb3IgcG9ydCAlY1xuIiwKPiA+ICsJCQkJ ICAgICB0cmFuc2NvZGVyX25hbWUoaSksIHRtcCwgcG9ydF9uYW1lKHBvcnQpKTsKPiA+ICsJCQkJ cmV0dXJuIGZhbHNlOwo+ID4gIAkJCX0KPiA+ICAJCX0KPiA+ICsKPiA+ICsJCW51bV90cmFuc2Nv ZGVycyA9IG51bV9zc3RfdHJhbnNjb2RlcnMgKwo+ID4gKwkJCW51bV9mZGlfdHJhbnNjb2RlcnMg KyBudW1faGRtaV90cmFuc2NvZGVyczsKPiA+ICsKPiA+ICsJCWlmIChXQVJOKG51bV90cmFuc2Nv ZGVycyAmJiBudW1fbXN0X3RyYW5zY29kZXJzLAo+ID4gKwkJCSAiTVNUIGFuZCBub24tTVNUIHRy YW5zY29kZXJzIGVuYWJsZWQgZm9yIHBvcnQgJWMgKCVkIHNzdCwgJWQgbXN0LCAlZCBmZGksICVk IGhkbWkpXG4iLAo+ID4gKwkJCSBwb3J0X25hbWUocG9ydCksIG51bV9zc3RfdHJhbnNjb2RlcnMs IG51bV9tc3RfdHJhbnNjb2RlcnMsCj4gPiArCQkJIG51bV9mZGlfdHJhbnNjb2RlcnMsIG51bV9o ZG1pX3RyYW5zY29kZXJzKSkKPiA+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiArCQlpZiAo V0FSTihudW1fdHJhbnNjb2RlcnMgPiAxLAo+ID4gKwkJCSAiTXVsdGlwbGUgdHJhbnNjb2RlcnMg ZW5hYmxlZCBmb3IgcG9ydCAlYyAoJWQgc3N0LCAlZCBtc3QsICVkIGZkaSwgJWQgaGRtaSlcbiIs Cj4gPiArCQkJIHBvcnRfbmFtZShwb3J0KSwgbnVtX3NzdF90cmFuc2NvZGVycywgbnVtX21zdF90 cmFuc2NvZGVycywKPiA+ICsJCQkgbnVtX2ZkaV90cmFuc2NvZGVycywgbnVtX2hkbWlfdHJhbnNj b2RlcnMpKQo+ID4gKwkJCXJldHVybiBmYWxzZTsKPiA+ICsKPiA+ICsJCWlmIChlbmFibGVkKQo+ ID4gKwkJCXJldHVybiB0cnVlOwo+IAo+IFRoaXMgaXMgdG9vIGJpZyBhbmQgbmVlZHMgdG8gYmUg ZXh0cmFjdGVkIGludG8gYSBzdGF0aWMgZnVuY3Rpb24uCj4gCj4gT3RoZXJ3aXNlIEkgZGlkbid0 IHNwb3QgYW55dGhpbmcsIGFuZCBnZXR0aW5nIHJpZCBvZiBPVVRQVVRfVU5LTk9XTiBpcwo+IHJl YWxseSBuaWNlLiBJIGFsc28gd29uZGVyIHdoZXRoZXIgd2Ugc2hvdWxkIGxvbmcgdGVybSByZXdv cmsgbXN0IHRvIHVzZQo+IHRoZSBmYWtlIGVuY29kZXIgYXMgdGhlIHJlYWwgb25lLiBUaGUgZmFr ZSBlbmNvZGVyIHdhcyBqdXN0IGRvbmUgdG8gbm90Cj4gY29uZnVzZSB0aGUgZGRpIGVuY29kZXIs IGJ1dCBub3cgdGhhdCB3ZSBoYXZlIG11bHRpcGxlcyBvZiB0aG9zZSB3ZSBtaWdodAo+IGFzIHdl bGwgZW1icmFjZSB0aGF0IGV2ZXJ5d2hlcmUuCgpIbW0uIE9uZSBpZGVhIGZvciBNU1QgSSd2ZSBo YWQgaXMgdGhhdCB3ZSdkIHB1bGwgb3V0IHRoZSBtYWluIGxpbmsKbWFuYWdlbWVudCBmcm9tIHRo ZSBtc3QgY29kZSwgYW5kIGluc3RlYWQgdXNlIGF0b21pYyB0byBzZXQgdXAgdGhlIG1haW4KbGlu ayBhcyBqdXN0IGFub3RoZXIgY3J0YyAod291bGQgbmVlZCBhIGZha2UgY3J0YyBmb3IgdGhhdCks IGFuZCB0aGVuCnRoZSBzdHJlYW1zIHdvdWxkIGp1c3QgZGVhbCB3aXRoIHRoZWlyIGZha2UgZW5j b2RlcnMgYW5kIG5vdCBtZXNzIGFib3V0CndpdGggdGhlIG1haW4gZW5jb2RlciBhdCBhbGwuIEJ1 dCBzb3VuZHMgbGlrZSB5b3UndmUgaGFkIHByZXR0eSBtdWNoIHRoZQpvcHBvc2l0ZSBpZGVhLgoK PiAKPiBDaGVlcnMsIERhbmllbAo+IAo+ID4gIAl9Cj4gPiAgCj4gPiAtCURSTV9ERUJVR19LTVMo Ik5vIHBpcGUgZm9yIGRkaSBwb3J0ICVjIGZvdW5kXG4iLCBwb3J0X25hbWUocG9ydCkpOwo+ID4g K291dDoKPiA+ICsJRFJNX0RFQlVHX0tNUygiTm8gcGlwZSBmb3IgRERJIHBvcnQgJWMgZm91bmRc biIsIHBvcnRfbmFtZShwb3J0KSk7Cj4gPiAgCj4gPiAgCXJldHVybiBmYWxzZTsKPiA+ICB9Cj4g PiBAQCAtMzE3NCw4ICszMjYxLDYgQEAgc3RhdGljIGJvb2wgaW50ZWxfZGRpX2NvbXB1dGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlpbnQgdHlwZSA9IGVuY29k ZXItPnR5cGU7Cj4gPiAgCWludCBwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQoZW5j b2Rlcik7Cj4gPiAgCj4gPiAtCVdBUk4odHlwZSA9PSBJTlRFTF9PVVRQVVRfVU5LTk9XTiwgImNv bXB1dGVfY29uZmlnKCkgb24gdW5rbm93biBvdXRwdXQhXG4iKTsKPiA+IC0KPiA+ICAJaWYgKHBv cnQgPT0gUE9SVF9BKQo+ID4gIAkJcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyID0gVFJBTlND T0RFUl9FRFA7Cj4gPiAgCj4gPiBAQCAtMzIyNCw1MyArMzMwOSwxOCBAQCBpbnRlbF9kZGlfaW5p dF9oZG1pX2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCkKPiA+ICAJcmV0dXJuIGNvbm5lY3RvcjsKPiA+ICB9Cj4gPiAgCj4gPiAtdm9pZCBpbnRlbF9k ZGlfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCkKPiA+ICtzdGF0 aWMgaW50IGludGVsX2RkaV9pbml0X3JvbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBw b3J0IHBvcnQsCj4gPiArCQkJICAgICAgIGludCBlbmNvZGVyX3R5cGUsIHVpbnQzMl90IHNhdmVk X3BvcnRfYml0cywKPiA+ICsJCQkgICAgICAgaW50IG1heF9sYW5lcykKPiA+ICB7Cj4gPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICAJ c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQ7Cj4gPiAgCXN0cnVjdCBp bnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyOwo+ID4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXI7Cj4gPiAtCWJvb2wgaW5pdF9oZG1pLCBpbml0X2RwOwo+ID4gLQlpbnQgbWF4X2xhbmVz Owo+ID4gLQo+ID4gLQlpZiAoSTkxNV9SRUFEKERESV9CVUZfQ1RMKFBPUlRfQSkpICYgRERJX0Ff NF9MQU5FUykgewo+ID4gLQkJc3dpdGNoIChwb3J0KSB7Cj4gPiAtCQljYXNlIFBPUlRfQToKPiA+ IC0JCQltYXhfbGFuZXMgPSA0Owo+ID4gLQkJCWJyZWFrOwo+ID4gLQkJY2FzZSBQT1JUX0U6Cj4g PiAtCQkJbWF4X2xhbmVzID0gMDsKPiA+IC0JCQlicmVhazsKPiA+IC0JCWRlZmF1bHQ6Cj4gPiAt CQkJbWF4X2xhbmVzID0gNDsKPiA+IC0JCQlicmVhazsKPiA+IC0JCX0KPiA+IC0JfSBlbHNlIHsK PiA+IC0JCXN3aXRjaCAocG9ydCkgewo+ID4gLQkJY2FzZSBQT1JUX0E6Cj4gPiAtCQkJbWF4X2xh bmVzID0gMjsKPiA+IC0JCQlicmVhazsKPiA+IC0JCWNhc2UgUE9SVF9FOgo+ID4gLQkJCW1heF9s YW5lcyA9IDI7Cj4gPiAtCQkJYnJlYWs7Cj4gPiAtCQlkZWZhdWx0Ogo+ID4gLQkJCW1heF9sYW5l cyA9IDQ7Cj4gPiAtCQkJYnJlYWs7Cj4gPiAtCQl9Cj4gPiAtCX0KPiA+IC0KPiA+IC0JaW5pdF9o ZG1pID0gKGRldl9wcml2LT52YnQuZGRpX3BvcnRfaW5mb1twb3J0XS5zdXBwb3J0c19kdmkgfHwK PiA+IC0JCSAgICAgZGV2X3ByaXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLnN1cHBvcnRzX2hk bWkpOwo+ID4gLQlpbml0X2RwID0gZGV2X3ByaXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLnN1 cHBvcnRzX2RwOwo+ID4gLQlpZiAoIWluaXRfZHAgJiYgIWluaXRfaGRtaSkgewo+ID4gLQkJRFJN X0RFQlVHX0tNUygiVkJUIHNheXMgcG9ydCAlYyBpcyBub3QgRFZJL0hETUkvRFAgY29tcGF0aWJs ZSwgcmVzcGVjdCBpdFxuIiwKPiA+IC0JCQkgICAgICBwb3J0X25hbWUocG9ydCkpOwo+ID4gLQkJ cmV0dXJuOwo+ID4gLQl9Cj4gPiAgCj4gPiAgCWludGVsX2RpZ19wb3J0ID0ga3phbGxvYyhzaXpl b2YoKmludGVsX2RpZ19wb3J0KSwgR0ZQX0tFUk5FTCk7Cj4gPiAgCWlmICghaW50ZWxfZGlnX3Bv cnQpCj4gPiAtCQlyZXR1cm47Cj4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ICAKPiA+ICAJaW50 ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsKPiA+ICAJZW5jb2RlciA9ICZpbnRl bF9lbmNvZGVyLT5iYXNlOwo+ID4gQEAgLTMyODcsOSArMzMzNyw3IEBAIHZvaWQgaW50ZWxfZGRp X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCj4gPiAgCWludGVs X2VuY29kZXItPmdldF9jb25maWcgPSBpbnRlbF9kZGlfZ2V0X2NvbmZpZzsKPiA+ICAKPiA+ICAJ aW50ZWxfZGlnX3BvcnQtPnBvcnQgPSBwb3J0Owo+ID4gLQlpbnRlbF9kaWdfcG9ydC0+c2F2ZWRf cG9ydF9iaXRzID0gSTkxNV9SRUFEKERESV9CVUZfQ1RMKHBvcnQpKSAmCj4gPiAtCQkJCQkgIChE RElfQlVGX1BPUlRfUkVWRVJTQUwgfAo+ID4gLQkJCQkJICAgRERJX0FfNF9MQU5FUyk7Cj4gPiAr CWludGVsX2RpZ19wb3J0LT5zYXZlZF9wb3J0X2JpdHMgPSBzYXZlZF9wb3J0X2JpdHM7Cj4gPiAg CWludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXMgPSBtYXhfbGFuZXM7Cj4gPiAgCj4gPiAgCS8qCj4g PiBAQCAtMzMwNiwxMSArMzM1NCwxMSBAQCB2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0KQo+ID4gIAkJfQo+ID4gIAl9Cj4gPiAgCj4gPiAt CWludGVsX2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRfVU5LTk9XTjsKPiA+ICsJaW50ZWxf ZW5jb2Rlci0+dHlwZSA9IGVuY29kZXJfdHlwZTsKPiA+ICAJaW50ZWxfZW5jb2Rlci0+Y3J0Y19t YXNrID0gKDEgPDwgMCkgfCAoMSA8PCAxKSB8ICgxIDw8IDIpOwo+ID4gIAlpbnRlbF9lbmNvZGVy LT5jbG9uZWFibGUgPSAwOwo+ID4gIAo+ID4gLQlpZiAoaW5pdF9kcCkgewo+ID4gKwlpZiAoaW50 ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQpIHsKPiA+ICAJCWlm ICghaW50ZWxfZGRpX2luaXRfZHBfY29ubmVjdG9yKGludGVsX2RpZ19wb3J0KSkKPiA+ICAJCQln b3RvIGVycjsKPiA+ICAKPiA+IEBAIC0zMzI3LDE0ICszMzc1LDc0IEBAIHZvaWQgaW50ZWxfZGRp X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCj4gPiAgCj4gPiAg CS8qIEluIHRoZW9yeSB3ZSBkb24ndCBuZWVkIHRoZSBlbmNvZGVyLT50eXBlIGNoZWNrLCBidXQg bGVhdmUgaXQganVzdCBpbgo+ID4gIAkgKiBjYXNlIHdlIGhhdmUgc29tZSByZWFsbHkgYmFkIFZC VHMuLi4gKi8KPiA+IC0JaWYgKGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0VE UCAmJiBpbml0X2hkbWkpIHsKPiA+ICsJaWYgKGludGVsX2VuY29kZXItPnR5cGUgPT0gSU5URUxf T1VUUFVUX0hETUkpIHsKPiA+ICAJCWlmICghaW50ZWxfZGRpX2luaXRfaGRtaV9jb25uZWN0b3Io aW50ZWxfZGlnX3BvcnQpKQo+ID4gIAkJCWdvdG8gZXJyOwo+ID4gIAl9Cj4gPiAgCj4gPiAtCXJl dHVybjsKPiA+ICsJcmV0dXJuIGludGVsX2VuY29kZXItPnR5cGU7Cj4gPiAgCj4gPiAgZXJyOgo+ ID4gIAlkcm1fZW5jb2Rlcl9jbGVhbnVwKGVuY29kZXIpOwo+ID4gIAlrZnJlZShpbnRlbF9kaWdf cG9ydCk7Cj4gPiArCj4gPiArCXJldHVybiAtRU5PREVWOwo+ID4gK30KPiA+ICsKPiA+ICt2b2lk IGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0KQo+ ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOwo+ID4gKwl1aW50MzJfdCBzYXZlZF9wb3J0X2JpdHM7Cj4gPiArCWJvb2wgaW5pdF9oZG1p LCBpbml0X2RwOwo+ID4gKwlpbnQgbWF4X2xhbmVzOwo+ID4gKwo+ID4gKwlpZiAoSTkxNV9SRUFE KERESV9CVUZfQ1RMKFBPUlRfQSkpICYgRERJX0FfNF9MQU5FUykgewo+ID4gKwkJc3dpdGNoIChw b3J0KSB7Cj4gPiArCQljYXNlIFBPUlRfQToKPiA+ICsJCQltYXhfbGFuZXMgPSA0Owo+ID4gKwkJ CWJyZWFrOwo+ID4gKwkJY2FzZSBQT1JUX0U6Cj4gPiArCQkJbWF4X2xhbmVzID0gMDsKPiA+ICsJ CQlicmVhazsKPiA+ICsJCWRlZmF1bHQ6Cj4gPiArCQkJbWF4X2xhbmVzID0gNDsKPiA+ICsJCQli cmVhazsKPiA+ICsJCX0KPiA+ICsJfSBlbHNlIHsKPiA+ICsJCXN3aXRjaCAocG9ydCkgewo+ID4g KwkJY2FzZSBQT1JUX0E6Cj4gPiArCQkJbWF4X2xhbmVzID0gMjsKPiA+ICsJCQlicmVhazsKPiA+ ICsJCWNhc2UgUE9SVF9FOgo+ID4gKwkJCW1heF9sYW5lcyA9IDI7Cj4gPiArCQkJYnJlYWs7Cj4g PiArCQlkZWZhdWx0Ogo+ID4gKwkJCW1heF9sYW5lcyA9IDQ7Cj4gPiArCQkJYnJlYWs7Cj4gPiAr CQl9Cj4gPiArCX0KPiA+ICsKPiA+ICsJaW5pdF9oZG1pID0gKGRldl9wcml2LT52YnQuZGRpX3Bv cnRfaW5mb1twb3J0XS5zdXBwb3J0c19kdmkgfHwKPiA+ICsJCSAgICAgZGV2X3ByaXYtPnZidC5k ZGlfcG9ydF9pbmZvW3BvcnRdLnN1cHBvcnRzX2hkbWkpOwo+ID4gKwlpbml0X2RwID0gZGV2X3By aXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLnN1cHBvcnRzX2RwOwo+ID4gKwlpZiAoIWluaXRf ZHAgJiYgIWluaXRfaGRtaSkgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiVkJUIHNheXMgcG9ydCAl YyBpcyBub3QgRFZJL0hETUkvRFAgY29tcGF0aWJsZSwgcmVzcGVjdCBpdFxuIiwKPiA+ICsJCQkg ICAgICBwb3J0X25hbWUocG9ydCkpOwo+ID4gKwkJcmV0dXJuOwo+ID4gKwl9Cj4gPiArCj4gPiAr CXNhdmVkX3BvcnRfYml0cyA9IEk5MTVfUkVBRChERElfQlVGX0NUTChwb3J0KSkgJgo+ID4gKwkJ KERESV9CVUZfUE9SVF9SRVZFUlNBTCB8IERESV9BXzRfTEFORVMpOwo+ID4gKwo+ID4gKwlpZiAo aW5pdF9kcCkgewo+ID4gKwkJaW50IHJldCA9IGludGVsX2RkaV9pbml0X3JvbGUoZGV2LCBwb3J0 LCBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQsCj4gPiArCQkJCQkgICAgICBzYXZlZF9wb3J0X2Jp dHMsIG1heF9sYW5lcyk7Cj4gPiArCQkvKiBEb24ndCByZWdpc3RlciB0aGUgSERNSSBjb25uZWN0 b3IvZW5jb2RlciB3aGVuIHdlIGhhdmUgZURQICovCj4gPiArCQlpZiAocmV0ID09IElOVEVMX09V VFBVVF9FRFApCj4gPiArCQkJaW5pdF9oZG1pID0gZmFsc2U7Cj4gPiArCX0KPiA+ICsKPiA+ICsJ aWYgKGluaXRfaGRtaSkKPiA+ICsJCWludGVsX2RkaV9pbml0X3JvbGUoZGV2LCBwb3J0LCBJTlRF TF9PVVRQVVRfSERNSSwKPiA+ICsJCQkJICAgIHNhdmVkX3BvcnRfYml0cywgbWF4X2xhbmVzKTsK PiA+ICB9Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBpbmRleCBiYzdh YWEzYzQzMWUuLmZjMWQ3Mzg3ZWIxMiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gPiBAQCAtNTI1MiwxMyArNTI1Miw5IEBAIHN0YXRpYyBlbnVtIGludGVsX2Rp c3BsYXlfcG93ZXJfZG9tYWluIHBvcnRfdG9fYXV4X3Bvd2VyX2RvbWFpbihlbnVtIHBvcnQgcG9y dCkKPiA+ICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluCj4gPiAgaW50ZWxfZGlzcGxh eV9wb3J0X3Bvd2VyX2RvbWFpbihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikK PiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9lbmNvZGVyLT5iYXNl LmRldjsKPiA+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQ7Cj4g PiAgCj4gPiAgCXN3aXRjaCAoaW50ZWxfZW5jb2Rlci0+dHlwZSkgewo+ID4gLQljYXNlIElOVEVM X09VVFBVVF9VTktOT1dOOgo+ID4gLQkJLyogT25seSBEREkgcGxhdGZvcm1zIHNob3VsZCBldmVy IHVzZSB0aGlzIG91dHB1dCB0eXBlICovCj4gPiAtCQlXQVJOX09OX09OQ0UoIUhBU19EREkoZGV2 KSk7Cj4gPiAgCWNhc2UgSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUOgo+ID4gIAljYXNlIElOVEVM X09VVFBVVF9IRE1JOgo+ID4gIAljYXNlIElOVEVMX09VVFBVVF9FRFA6Cj4gPiBAQCAtNTI3OSwy MCArNTI3NSw5IEBAIGludGVsX2Rpc3BsYXlfcG9ydF9wb3dlcl9kb21haW4oc3RydWN0IGludGVs X2VuY29kZXIgKmludGVsX2VuY29kZXIpCj4gPiAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2Rv bWFpbgo+ID4gIGludGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9tYWluKHN0cnVjdCBpbnRl bF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ID4gIHsKPiA+IC0Jc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGludGVsX2VuY29kZXItPmJhc2UuZGV2Owo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydDsKPiA+ICAKPiA+ICAJc3dpdGNoIChpbnRlbF9lbmNvZGVy LT50eXBlKSB7Cj4gPiAtCWNhc2UgSU5URUxfT1VUUFVUX1VOS05PV046Cj4gPiAtCWNhc2UgSU5U RUxfT1VUUFVUX0hETUk6Cj4gPiAtCQkvKgo+ID4gLQkJICogT25seSBEREkgcGxhdGZvcm1zIHNo b3VsZCBldmVyIHVzZSB0aGVzZSBvdXRwdXQgdHlwZXMuCj4gPiAtCQkgKiBXZSBjYW4gZ2V0IGhl cmUgYWZ0ZXIgdGhlIEhETUkgZGV0ZWN0IGNvZGUgaGFzIGFscmVhZHkgc2V0Cj4gPiAtCQkgKiB0 aGUgdHlwZSBvZiB0aGUgc2hhcmVkIGVuY29kZXIuIFNpbmNlIHdlIGNhbid0IGJlIHN1cmUKPiA+ IC0JCSAqIHdoYXQncyB0aGUgc3RhdHVzIG9mIHRoZSBnaXZlbiBjb25uZWN0b3JzLCBwbGF5IHNh ZmUgYW5kCj4gPiAtCQkgKiBydW4gdGhlIERQIGRldGVjdGlvbiB0b28uCj4gPiAtCQkgKi8KPiA+ IC0JCVdBUk5fT05fT05DRSghSEFTX0RESShkZXYpKTsKPiA+ICAJY2FzZSBJTlRFTF9PVVRQVVRf RElTUExBWVBPUlQ6Cj4gPiAgCWNhc2UgSU5URUxfT1VUUFVUX0VEUDoKPiA+ICAJCWludGVsX2Rp Z19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsKPiA+IEBAIC0x MjI4Myw5ICsxMjI2OCw2IEBAIHN0YXRpYyBib29sIGNoZWNrX2RpZ2l0YWxfcG9ydF9jb25mbGlj dHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gIAo+ID4gIAkJc3dpdGNoIChl bmNvZGVyLT50eXBlKSB7Cj4gPiAgCQkJdW5zaWduZWQgaW50IHBvcnRfbWFzazsKPiA+IC0JCWNh c2UgSU5URUxfT1VUUFVUX1VOS05PV046Cj4gPiAtCQkJaWYgKFdBUk5fT04oIUhBU19EREkoZGV2 KSkpCj4gPiAtCQkJCWJyZWFrOwo+ID4gIAkJY2FzZSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQ6 Cj4gPiAgCQljYXNlIElOVEVMX09VVFBVVF9IRE1JOgo+ID4gIAkJY2FzZSBJTlRFTF9PVVRQVVRf RURQOgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBpbmRleCA3ZDM1NGIxZTVlNWYuLjFk MzFhYTI5NmFhYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+IEBAIC00NjAx LDggKzQ2MDEsNiBAQCBpbnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwgYm9vbCBmb3JjZSkKPiA+ICAKPiA+ICAJaWYgKGludGVsX2RwLT5pc19tc3QpIHsKPiA+ ICAJCS8qIE1TVCBkZXZpY2VzIGFyZSBkaXNjb25uZWN0ZWQgZnJvbSBhIG1vbml0b3IgUE9WICov Cj4gPiAtCQlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQo+ID4g LQkJCWludGVsX2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQ7Cj4gPiAg CQlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7Cj4gPiAgCX0KPiA+ICAKPiA+ IEBAIC00NjMyLDggKzQ2MzAsNiBAQCBpbnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKPiA+ICAJaWYgKHJldCkgewo+ID4gIAkJLyogaWYg d2UgYXJlIGluIE1TVCBtb2RlIHRoZW4gdGhpcyBjb25uZWN0b3IKPiA+ICAJCSAgIHdvbid0IGFw cGVhciBjb25uZWN0ZWQgb3IgaGF2ZSBhbnl0aGluZyB3aXRoIEVESUQgb24gaXQgKi8KPiA+IC0J CWlmIChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApCj4gPiAtCQkJaW50 ZWxfZW5jb2Rlci0+dHlwZSA9IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVDsKPiA+ICAJCXN0YXR1 cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ID4gIAkJZ290byBvdXQ7Cj4gPiAg CX0KPiA+IEBAIC00NjQ4LDggKzQ2NDQsNiBAQCBpbnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKPiA+ICAKPiA+ICAJaW50ZWxfZHBfc2V0 X2VkaWQoaW50ZWxfZHApOwo+ID4gIAo+ID4gLQlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJ TlRFTF9PVVRQVVRfRURQKQo+ID4gLQkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9IElOVEVMX09VVFBV VF9ESVNQTEFZUE9SVDsKPiA+ICAJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7 Cj4gPiAgCj4gPiAgCS8qIFRyeSB0byByZWFkIHRoZSBzb3VyY2Ugb2YgdGhlIGludGVycnVwdCAq Lwo+ID4gQEAgLTQ2OTIsOSArNDY4Niw2IEBAIGludGVsX2RwX2ZvcmNlKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCj4gPiAgCWludGVsX2RwX3NldF9lZGlkKGludGVsX2RwKTsKPiA+ ICAKPiA+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7 Cj4gPiAtCj4gPiAtCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFAp Cj4gPiAtCQlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUOwo+ ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgaW50IGludGVsX2RwX2dldF9tb2RlcyhzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gQEAgLTQ5NjksOSArNDk2MCw5IEBAIGludGVsX2Rw X2hwZF9wdWxzZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwgYm9v bCBsb25nX2hwZCkKPiA+ICAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9k b21haW47Cj4gPiAgCWVudW0gaXJxcmV0dXJuIHJldCA9IElSUV9OT05FOwo+ID4gIAo+ID4gLQlp ZiAoaW50ZWxfZGlnX3BvcnQtPmJhc2UudHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQICYmCj4gPiAt CSAgICBpbnRlbF9kaWdfcG9ydC0+YmFzZS50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JKQo+ID4g LQkJaW50ZWxfZGlnX3BvcnQtPmJhc2UudHlwZSA9IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVDsK PiA+ICsJaWYgKFdBUk5fT05fT05DRShpbnRlbF9kaWdfcG9ydC0+YmFzZS50eXBlICE9IElOVEVM X09VVFBVVF9FRFAgJiYKPiA+ICsJCQkgaW50ZWxfZGlnX3BvcnQtPmJhc2UudHlwZSAhPSBJTlRF TF9PVVRQVVRfRElTUExBWVBPUlQpKQo+ID4gKwkJcmV0dXJuIElSUV9IQU5ETEVEOwo+ID4gIAo+ ID4gIAlpZiAobG9uZ19ocGQgJiYgaW50ZWxfZGlnX3BvcnQtPmJhc2UudHlwZSA9PSBJTlRFTF9P VVRQVVRfRURQKSB7Cj4gPiAgCQkvKgo+ID4gQEAgLTU4MTUsNiArNTgwNiw5IEBAIGludGVsX2Rw X2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 LAo+ID4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5wb3J0Owo+ID4gIAlpbnQg dHlwZSwgcmV0Owo+ID4gIAo+ID4gKwlpZiAoV0FSTl9PTihpbnRlbF9lbmNvZGVyLT50eXBlICE9 IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCkpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCj4g PiAgCWlmIChXQVJOKGludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXMgPCAxLAo+ID4gIAkJICJOb3Qg ZW5vdWdoIGxhbmVzICglZCkgZm9yIERQIG9uIHBvcnQgJWNcbiIsCj4gPiAgCQkgaW50ZWxfZGln X3BvcnQtPm1heF9sYW5lcywgcG9ydF9uYW1lKHBvcnQpKSkKPiA+IEBAIC01ODUxLDExICs1ODQ1 LDYgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQsCj4gPiAgCWVsc2UKPiA+ICAJCXR5cGUgPSBEUk1fTU9ERV9DT05ORUNU T1JfRGlzcGxheVBvcnQ7Cj4gPiAgCj4gPiAtCS8qCj4gPiAtCSAqIEZvciBlRFAgd2UgYWx3YXlz IHNldCB0aGUgZW5jb2RlciB0eXBlIHRvIElOVEVMX09VVFBVVF9FRFAsIGJ1dAo+ID4gLQkgKiBm b3IgRFAgdGhlIGVuY29kZXIgdHlwZSBjYW4gYmUgc2V0IGJ5IHRoZSBjYWxsZXIgdG8KPiA+IC0J ICogSU5URUxfT1VUUFVUX1VOS05PV04gZm9yIERESSwgc28gZG9uJ3QgcmV3cml0ZSBpdC4KPiA+ IC0JICovCj4gPiAgCWlmICh0eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApCj4gPiAgCQlp bnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0VEUDsKPiA+ICAKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gPiBpbmRleCBhOGE4NGI4YzJiYWMuLjllNWRiM2Q3MWUxMiAxMDA2 NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTEwMyw4ICsxMDMsNyBAQCBl bnVtIGludGVsX291dHB1dF90eXBlIHsKPiA+ICAJSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUID0g NywKPiA+ICAJSU5URUxfT1VUUFVUX0VEUCA9IDgsCj4gPiAgCUlOVEVMX09VVFBVVF9EU0kgPSA5 LAo+ID4gLQlJTlRFTF9PVVRQVVRfVU5LTk9XTiA9IDEwLAo+ID4gLQlJTlRFTF9PVVRQVVRfRFBf TVNUID0gMTEsCj4gPiArCUlOVEVMX09VVFBVVF9EUF9NU1QgPSAxMCwKPiA+ICB9Owo+ID4gIAo+ ID4gICNkZWZpbmUgSU5URUxfRFZPX0NISVBfTk9ORSAwCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aGRtaS5jCj4gPiBpbmRleCA4OTUxODlhYmZkNTYuLjc1ZWE5NTE1YTljZSAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPiBAQCAtMjAzNCw2ICsyMDM0LDkgQEAgdm9pZCBp bnRlbF9oZG1pX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0LAo+ID4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5wb3J0Owo+ ID4gIAl1aW50OF90IGFsdGVybmF0ZV9kZGNfcGluOwo+ID4gIAo+ID4gKwlpZiAoV0FSTl9PTihp bnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JKSkKPiA+ICsJCXJldHVybjsK PiA+ICsKPiA+ICAJaWYgKFdBUk4oaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcyA8IDQsCj4gPiAg CQkgIk5vdCBlbm91Z2ggbGFuZXMgKCVkKSBmb3IgSERNSSBvbiBwb3J0ICVjXG4iLAo+ID4gIAkJ IGludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXMsIHBvcnRfbmFtZShwb3J0KSkpCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKPiA+IGluZGV4IGUzNjJhMzA3NzZmYS4uYTE1NDU5 YTQ1MWMyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdp b24uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYwo+ID4g QEAgLTM2MCw3ICszNjAsNiBAQCBpbnQgaW50ZWxfb3ByZWdpb25fbm90aWZ5X2VuY29kZXIoc3Ry dWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gPiAgCWNhc2UgSU5URUxfT1VUUFVU X0FOQUxPRzoKPiA+ICAJCXR5cGUgPSBESVNQTEFZX1RZUEVfQ1JUOwo+ID4gIAkJYnJlYWs7Cj4g PiAtCWNhc2UgSU5URUxfT1VUUFVUX1VOS05PV046Cj4gPiAgCWNhc2UgSU5URUxfT1VUUFVUX0RJ U1BMQVlQT1JUOgo+ID4gIAljYXNlIElOVEVMX09VVFBVVF9IRE1JOgo+ID4gIAljYXNlIElOVEVM X09VVFBVVF9EUF9NU1Q6Cj4gPiAtLSAKPiA+IDIuNC4xMAo+ID4gCj4gPiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAo+IC0tIAo+IERh bmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiBodHRw Oi8vYmxvZy5mZndsbC5jaAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK