From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 10/15] drm/i915: Split the problematic dual-role DDI encoder into two encoders Date: Thu, 10 Dec 2015 14:47:12 +0100 Message-ID: <20151210134712.GH20822@phenom.ffwll.local> References: <1449597590-6971-1-git-send-email-ville.syrjala@linux.intel.com> <1449597590-6971-11-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f43.google.com (mail-wm0-f43.google.com [74.125.82.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 941546E88B for ; Thu, 10 Dec 2015 05:47:16 -0800 (PST) Received: by mail-wm0-f43.google.com with SMTP id v187so33930860wmv.1 for ; Thu, 10 Dec 2015 05:47:16 -0800 (PST) Content-Disposition: inline In-Reply-To: <1449597590-6971-11-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ville.syrjala@linux.intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBEZWMgMDgsIDIwMTUgYXQgMDc6NTk6NDVQTSArMDIwMCwgdmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiAKPiBFbGltaW5hdGUgdGhlIHRyb3VibGVzb21lIHJvbGUg c3dpdGNoaW5nIERESSBlbmNvZGVyLCBhbmQganVzdCByZWdpc3Rlcgo+IGEgc2VwYXJhdGUgZW5j b2RlciBmb3IgZWFjaCByb2xlIChEUCBhbmQgSERNSSkuCj4gCj4gU2lnbmVkLW9mZi1ieTogVmls bGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkNhdmVhdCBhYm91 dCBtYXhfbGFuZXMgYW5kIHByZS1EREkgcGxhdGZvcm1zIHN0aWxsIGFwcGx5LgoKPiAtLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgICB8IDIzMiArKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyAgfCAgMTggLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAg fCAgMjMgKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgIHwgICAz ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyAgICAgfCAgIDMgKwo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5jIHwgICAxIC0KPiAgNiBmaWxlcyBj aGFuZ2VkLCAxODAgaW5zZXJ0aW9ucygrKSwgMTAwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jCj4gaW5kZXggMDc0MTIxZWZiMjY1Li41ZjAwOGYwZmRjMTMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IEBAIC0zMTgsNyArMzE4LDYgQEAgc3RhdGljIHZv aWQgZGRpX2dldF9lbmNvZGVyX3BvcnQoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29k ZXIsCj4gIAljYXNlIElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVDoKPiAgCWNhc2UgSU5URUxfT1VU UFVUX0VEUDoKPiAgCWNhc2UgSU5URUxfT1VUUFVUX0hETUk6Cj4gLQljYXNlIElOVEVMX09VVFBV VF9VTktOT1dOOgo+ICAJCSpkaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydChlbmNvZGVyKTsKPiAg CQkqcG9ydCA9ICgqZGlnX3BvcnQpLT5wb3J0Owo+ICAJCWJyZWFrOwo+IEBAIC0xOTQyLDE5ICsx OTQxLDE5IEBAIGJvb2wgaW50ZWxfZGRpX2Nvbm5lY3Rvcl9nZXRfaHdfc3RhdGUoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ICAJc3dpdGNoICh0bXAgJiBUUkFOU19E RElfTU9ERV9TRUxFQ1RfTUFTSykgewo+ICAJY2FzZSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfSERN SToKPiAgCWNhc2UgVFJBTlNfRERJX01PREVfU0VMRUNUX0RWSToKPiAtCQlyZXR1cm4gKHR5cGUg PT0gRFJNX01PREVfQ09OTkVDVE9SX0hETUlBKTsKPiArCQlyZXR1cm4gdHlwZSA9PSBEUk1fTU9E RV9DT05ORUNUT1JfSERNSUE7Cj4gIAo+ICAJY2FzZSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFBf U1NUOgo+IC0JCWlmICh0eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApCj4gLQkJCXJldHVy biB0cnVlOwo+IC0JCXJldHVybiAodHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBv cnQpOwo+ICsJCXJldHVybiB0eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCB8 fAo+ICsJCQl0eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFA7Cj4gKwo+ICAJY2FzZSBUUkFO U19ERElfTU9ERV9TRUxFQ1RfRFBfTVNUOgo+ICAJCS8qIGlmIHRoZSB0cmFuc2NvZGVyIGlzIGlu IE1TVCBzdGF0ZSB0aGVuCj4gIAkJICogY29ubmVjdG9yIGlzbid0IGNvbm5lY3RlZCAqLwo+ICAJ CXJldHVybiBmYWxzZTsKPiAgCj4gIAljYXNlIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9GREk6Cj4g LQkJcmV0dXJuICh0eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9WR0EpOwo+ICsJCXJldHVybiB0 eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9WR0E7Cj4gIAo+ICAJZGVmYXVsdDoKPiAgCQlyZXR1 cm4gZmFsc2U7Cj4gQEAgLTE5ODEsOCArMTk4MCwyMyBAQCBib29sIGludGVsX2RkaV9nZXRfaHdf c3RhdGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJcmV0dXJuIGZhbHNlOwo+ ICAKPiAgCWlmIChwb3J0ID09IFBPUlRfQSkgewo+ICsJCVdBUk5fT04oZW5jb2Rlci0+dHlwZSAh PSBJTlRFTF9PVVRQVVRfRURQKTsKPiArCj4gIAkJdG1wID0gSTkxNV9SRUFEKFRSQU5TX0RESV9G VU5DX0NUTChUUkFOU0NPREVSX0VEUCkpOwo+ICAKPiArCQlpZiAoKHRtcCAmIFRSQU5TX0RESV9G VU5DX0VOQUJMRSkgPT0gMCkKPiArCQkJZ290byBvdXQ7Cj4gKwo+ICsJCXN3aXRjaCAodG1wICYg VFJBTlNfRERJX01PREVfU0VMRUNUX01BU0spIHsKPiArCQljYXNlIFRSQU5TX0RESV9NT0RFX1NF TEVDVF9EUF9TU1Q6Cj4gKwkJCWJyZWFrOwo+ICsJCWRlZmF1bHQ6Cj4gKwkJCVdBUk4oMSwKPiAr CQkJICAgICAiQmFkIHRyYW5zY29kZXIgRURQIERESSBtb2RlIDB4JTA4eCBmb3IgcG9ydCAlY1xu IiwKPiArCQkJICAgICB0bXAsIHBvcnRfbmFtZShwb3J0KSk7Cj4gKwkJCXJldHVybiBmYWxzZTsK PiArCQl9Cj4gKwo+ICAJCXN3aXRjaCAodG1wICYgVFJBTlNfRERJX0VEUF9JTlBVVF9NQVNLKSB7 Cj4gIAkJY2FzZSBUUkFOU19ERElfRURQX0lOUFVUX0FfT046Cj4gIAkJY2FzZSBUUkFOU19ERElf RURQX0lOUFVUX0FfT05PRkY6Cj4gQEAgLTE5OTQsMjUgKzIwMDgsOTggQEAgYm9vbCBpbnRlbF9k ZGlfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCWNhc2Ug VFJBTlNfRERJX0VEUF9JTlBVVF9DX09OT0ZGOgo+ICAJCQkqcGlwZSA9IFBJUEVfQzsKPiAgCQkJ YnJlYWs7Cj4gKwkJZGVmYXVsdDoKPiArCQkJV0FSTigxLAo+ICsJCQkgICAgICJCYWQgdHJhbnNj b2RlciBFRFAgaW5wdXQgc2VsZWN0IDB4JTA4eCBmb3IgcG9ydCAlY1xuIiwKPiArCQkJICAgICB0 bXAsIHBvcnRfbmFtZShwb3J0KSk7Cj4gKwkJCXJldHVybiBmYWxzZTsKPiAgCQl9Cj4gIAo+ICAJ CXJldHVybiB0cnVlOwo+ICAJfSBlbHNlIHsKPiArCQlpbnQgbnVtX21zdF90cmFuc2NvZGVycyA9 IDA7Cj4gKwkJaW50IG51bV9zc3RfdHJhbnNjb2RlcnMgPSAwOwo+ICsJCWludCBudW1fZmRpX3Ry YW5zY29kZXJzID0gMDsKPiArCQlpbnQgbnVtX2hkbWlfdHJhbnNjb2RlcnMgPSAwOwo+ICsJCWlu dCBudW1fdHJhbnNjb2RlcnMgPSAwOwo+ICsJCWJvb2wgZW5hYmxlZCA9IGZhbHNlOwo+ICsKPiAg CQlmb3IgKGkgPSBUUkFOU0NPREVSX0E7IGkgPD0gVFJBTlNDT0RFUl9DOyBpKyspIHsKPiAgCQkJ dG1wID0gSTkxNV9SRUFEKFRSQU5TX0RESV9GVU5DX0NUTChpKSk7Cj4gIAo+IC0JCQlpZiAoKHRt cCAmIFRSQU5TX0RESV9QT1JUX01BU0spCj4gLQkJCSAgICA9PSBUUkFOU19ERElfU0VMRUNUX1BP UlQocG9ydCkpIHsKPiAtCQkJCWlmICgodG1wICYgVFJBTlNfRERJX01PREVfU0VMRUNUX01BU0sp ID09IFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EUF9NU1QpCj4gLQkJCQkJcmV0dXJuIGZhbHNlOwo+ ICsJCQlpZiAoKHRtcCAmIFRSQU5TX0RESV9GVU5DX0VOQUJMRSkgPT0gMCkKPiArCQkJCWNvbnRp bnVlOwo+ICsKPiArCQkJaWYgKCh0bXAgJiBUUkFOU19ERElfUE9SVF9NQVNLKSAhPSBUUkFOU19E RElfU0VMRUNUX1BPUlQocG9ydCkpCj4gKwkJCQljb250aW51ZTsKPiArCj4gKwkJCWlmICgodG1w ICYgVFJBTlNfRERJX01PREVfU0VMRUNUX01BU0spID09IFRSQU5TX0RESV9NT0RFX1NFTEVDVF9E UF9NU1QpIHsKPiArCQkJCW51bV9tc3RfdHJhbnNjb2RlcnMrKzsKPiArCQkJCVdBUk5fT04ocG9y dCA9PSBQT1JUX0UpOwo+ICsJCQkJY29udGludWU7Cj4gKwkJCX0KPiArCj4gKwo+ICsJCQlzd2l0 Y2ggKHRtcCAmIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9NQVNLKSB7Cj4gKwkJCWNhc2UgVFJBTlNf RERJX01PREVfU0VMRUNUX0RQX1NTVDoKPiArCQkJCVdBUk5fT04ocG9ydCA9PSBQT1JUX0UgJiYg SU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDkpOwo+ICsKPiArCQkJCW51bV9zc3RfdHJhbnNj b2RlcnMrKzsKPiArCQkJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9ESVNQTEFZ UE9SVCB8fAo+ICsJCQkJICAgIGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+ ICsJCQkJCWVuYWJsZWQgPSB0cnVlOwo+ICsJCQkJCSpwaXBlID0gaTsKPiArCQkJCX0KPiArCQkJ CWJyZWFrOwo+ICsJCQljYXNlIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9IRE1JOgo+ICsJCQljYXNl IFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EVkk6Cj4gKwkJCQlXQVJOX09OKHBvcnQgPT0gUE9SVF9F KTsKCkhtLCBwcmV2aW91cyBwYXRjaGVzIG1hZGUgaXQgbG9vayBsaWtlIGhkbWkgb24gcG9ydCBF IGlzIHBvc3NpYmxlIC0gYXQKbGVhc3QgeW91IGFkZGVkIHBpbGVzIG9mIGNoZWNrcyB0byBtYWtl IHN1cmUgd2UgaGF2ZSBhdCBsZWFzdCA0IGxhbmVzCmV2ZXJ5d2hlcmUuIEFtIEkgbWlzdGFrZW4/ Cgo+ICsKPiArCQkJCW51bV9oZG1pX3RyYW5zY29kZXJzKys7Cj4gKwkJCQlpZiAoZW5jb2Rlci0+ dHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkgewo+ICsJCQkJCWVuYWJsZWQgPSB0cnVlOwo+ICsJ CQkJCSpwaXBlID0gaTsKPiArCQkJCX0KPiArCQkJCWJyZWFrOwo+ICsKPiArCQkJY2FzZSBUUkFO U19ERElfTU9ERV9TRUxFQ1RfRkRJOgo+ICsJCQkJV0FSTl9PTihwb3J0ICE9IFBPUlRfRSB8fCBJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpOwo+ICsKPiArCQkJCW51bV9mZGlfdHJhbnNj b2RlcnMrKzsKPiArCQkJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9BTkFMT0cp IHsKPiArCQkJCQllbmFibGVkID0gdHJ1ZTsKPiArCQkJCQkqcGlwZSA9IGk7Cj4gKwkJCQl9Cj4g KwkJCQlicmVhazsKPiAgCj4gLQkJCQkqcGlwZSA9IGk7Cj4gLQkJCQlyZXR1cm4gdHJ1ZTsKPiAr CQkJZGVmYXVsdDoKPiArCQkJCVdBUk4oMSwgIkJhZCB0cmFuc2NvZGVyICVjIERESSBtb2RlIDB4 JTA4eCBmb3IgcG9ydCAlY1xuIiwKPiArCQkJCSAgICAgdHJhbnNjb2Rlcl9uYW1lKGkpLCB0bXAs IHBvcnRfbmFtZShwb3J0KSk7Cj4gKwkJCQlyZXR1cm4gZmFsc2U7Cj4gIAkJCX0KPiAgCQl9Cj4g Kwo+ICsJCW51bV90cmFuc2NvZGVycyA9IG51bV9zc3RfdHJhbnNjb2RlcnMgKwo+ICsJCQludW1f ZmRpX3RyYW5zY29kZXJzICsgbnVtX2hkbWlfdHJhbnNjb2RlcnM7Cj4gKwo+ICsJCWlmIChXQVJO KG51bV90cmFuc2NvZGVycyAmJiBudW1fbXN0X3RyYW5zY29kZXJzLAo+ICsJCQkgIk1TVCBhbmQg bm9uLU1TVCB0cmFuc2NvZGVycyBlbmFibGVkIGZvciBwb3J0ICVjICglZCBzc3QsICVkIG1zdCwg JWQgZmRpLCAlZCBoZG1pKVxuIiwKPiArCQkJIHBvcnRfbmFtZShwb3J0KSwgbnVtX3NzdF90cmFu c2NvZGVycywgbnVtX21zdF90cmFuc2NvZGVycywKPiArCQkJIG51bV9mZGlfdHJhbnNjb2RlcnMs IG51bV9oZG1pX3RyYW5zY29kZXJzKSkKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCQlpZiAo V0FSTihudW1fdHJhbnNjb2RlcnMgPiAxLAo+ICsJCQkgIk11bHRpcGxlIHRyYW5zY29kZXJzIGVu YWJsZWQgZm9yIHBvcnQgJWMgKCVkIHNzdCwgJWQgbXN0LCAlZCBmZGksICVkIGhkbWkpXG4iLAo+ ICsJCQkgcG9ydF9uYW1lKHBvcnQpLCBudW1fc3N0X3RyYW5zY29kZXJzLCBudW1fbXN0X3RyYW5z Y29kZXJzLAo+ICsJCQkgbnVtX2ZkaV90cmFuc2NvZGVycywgbnVtX2hkbWlfdHJhbnNjb2RlcnMp KQo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJCWlmIChlbmFibGVkKQo+ICsJCQlyZXR1cm4g dHJ1ZTsKClRoaXMgaXMgdG9vIGJpZyBhbmQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkIGludG8gYSBz dGF0aWMgZnVuY3Rpb24uCgpPdGhlcndpc2UgSSBkaWRuJ3Qgc3BvdCBhbnl0aGluZywgYW5kIGdl dHRpbmcgcmlkIG9mIE9VVFBVVF9VTktOT1dOIGlzCnJlYWxseSBuaWNlLiBJIGFsc28gd29uZGVy IHdoZXRoZXIgd2Ugc2hvdWxkIGxvbmcgdGVybSByZXdvcmsgbXN0IHRvIHVzZQp0aGUgZmFrZSBl bmNvZGVyIGFzIHRoZSByZWFsIG9uZS4gVGhlIGZha2UgZW5jb2RlciB3YXMganVzdCBkb25lIHRv IG5vdApjb25mdXNlIHRoZSBkZGkgZW5jb2RlciwgYnV0IG5vdyB0aGF0IHdlIGhhdmUgbXVsdGlw bGVzIG9mIHRob3NlIHdlIG1pZ2h0CmFzIHdlbGwgZW1icmFjZSB0aGF0IGV2ZXJ5d2hlcmUuCgpD aGVlcnMsIERhbmllbAoKPiAgCX0KPiAgCj4gLQlEUk1fREVCVUdfS01TKCJObyBwaXBlIGZvciBk ZGkgcG9ydCAlYyBmb3VuZFxuIiwgcG9ydF9uYW1lKHBvcnQpKTsKPiArb3V0Ogo+ICsJRFJNX0RF QlVHX0tNUygiTm8gcGlwZSBmb3IgRERJIHBvcnQgJWMgZm91bmRcbiIsIHBvcnRfbmFtZShwb3J0 KSk7Cj4gIAo+ICAJcmV0dXJuIGZhbHNlOwo+ICB9Cj4gQEAgLTMxNzQsOCArMzI2MSw2IEBAIHN0 YXRpYyBib29sIGludGVsX2RkaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiAgCWludCB0eXBlID0gZW5jb2Rlci0+dHlwZTsKPiAgCWludCBwb3J0ID0gaW50 ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQoZW5jb2Rlcik7Cj4gIAo+IC0JV0FSTih0eXBlID09IElO VEVMX09VVFBVVF9VTktOT1dOLCAiY29tcHV0ZV9jb25maWcoKSBvbiB1bmtub3duIG91dHB1dCFc biIpOwo+IC0KPiAgCWlmIChwb3J0ID09IFBPUlRfQSkKPiAgCQlwaXBlX2NvbmZpZy0+Y3B1X3Ry YW5zY29kZXIgPSBUUkFOU0NPREVSX0VEUDsKPiAgCj4gQEAgLTMyMjQsNTMgKzMzMDksMTggQEAg aW50ZWxfZGRpX2luaXRfaGRtaV9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQpCj4gIAlyZXR1cm4gY29ubmVjdG9yOwo+ICB9Cj4gIAo+IC12b2lkIGlu dGVsX2RkaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0KQo+ICtz dGF0aWMgaW50IGludGVsX2RkaV9pbml0X3JvbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51 bSBwb3J0IHBvcnQsCj4gKwkJCSAgICAgICBpbnQgZW5jb2Rlcl90eXBlLCB1aW50MzJfdCBzYXZl ZF9wb3J0X2JpdHMsCj4gKwkJCSAgICAgICBpbnQgbWF4X2xhbmVzKQo+ICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQ7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqaW50ZWxfZW5jb2RlcjsKPiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiAtCWJv b2wgaW5pdF9oZG1pLCBpbml0X2RwOwo+IC0JaW50IG1heF9sYW5lczsKPiAtCj4gLQlpZiAoSTkx NV9SRUFEKERESV9CVUZfQ1RMKFBPUlRfQSkpICYgRERJX0FfNF9MQU5FUykgewo+IC0JCXN3aXRj aCAocG9ydCkgewo+IC0JCWNhc2UgUE9SVF9BOgo+IC0JCQltYXhfbGFuZXMgPSA0Owo+IC0JCQli cmVhazsKPiAtCQljYXNlIFBPUlRfRToKPiAtCQkJbWF4X2xhbmVzID0gMDsKPiAtCQkJYnJlYWs7 Cj4gLQkJZGVmYXVsdDoKPiAtCQkJbWF4X2xhbmVzID0gNDsKPiAtCQkJYnJlYWs7Cj4gLQkJfQo+ IC0JfSBlbHNlIHsKPiAtCQlzd2l0Y2ggKHBvcnQpIHsKPiAtCQljYXNlIFBPUlRfQToKPiAtCQkJ bWF4X2xhbmVzID0gMjsKPiAtCQkJYnJlYWs7Cj4gLQkJY2FzZSBQT1JUX0U6Cj4gLQkJCW1heF9s YW5lcyA9IDI7Cj4gLQkJCWJyZWFrOwo+IC0JCWRlZmF1bHQ6Cj4gLQkJCW1heF9sYW5lcyA9IDQ7 Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAtCX0KPiAtCj4gLQlpbml0X2hkbWkgPSAoZGV2X3ByaXYt PnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLnN1cHBvcnRzX2R2aSB8fAo+IC0JCSAgICAgZGV2X3By aXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLnN1cHBvcnRzX2hkbWkpOwo+IC0JaW5pdF9kcCA9 IGRldl9wcml2LT52YnQuZGRpX3BvcnRfaW5mb1twb3J0XS5zdXBwb3J0c19kcDsKPiAtCWlmICgh aW5pdF9kcCAmJiAhaW5pdF9oZG1pKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiVkJUIHNheXMgcG9y dCAlYyBpcyBub3QgRFZJL0hETUkvRFAgY29tcGF0aWJsZSwgcmVzcGVjdCBpdFxuIiwKPiAtCQkJ ICAgICAgcG9ydF9uYW1lKHBvcnQpKTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4gIAo+ICAJaW50ZWxf ZGlnX3BvcnQgPSBremFsbG9jKHNpemVvZigqaW50ZWxfZGlnX3BvcnQpLCBHRlBfS0VSTkVMKTsK PiAgCWlmICghaW50ZWxfZGlnX3BvcnQpCj4gLQkJcmV0dXJuOwo+ICsJCXJldHVybiAtRU5PTUVN Owo+ICAKPiAgCWludGVsX2VuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7Cj4gIAllbmNv ZGVyID0gJmludGVsX2VuY29kZXItPmJhc2U7Cj4gQEAgLTMyODcsOSArMzMzNyw3IEBAIHZvaWQg aW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCj4g IAlpbnRlbF9lbmNvZGVyLT5nZXRfY29uZmlnID0gaW50ZWxfZGRpX2dldF9jb25maWc7Cj4gIAo+ ICAJaW50ZWxfZGlnX3BvcnQtPnBvcnQgPSBwb3J0Owo+IC0JaW50ZWxfZGlnX3BvcnQtPnNhdmVk X3BvcnRfYml0cyA9IEk5MTVfUkVBRChERElfQlVGX0NUTChwb3J0KSkgJgo+IC0JCQkJCSAgKERE SV9CVUZfUE9SVF9SRVZFUlNBTCB8Cj4gLQkJCQkJICAgRERJX0FfNF9MQU5FUyk7Cj4gKwlpbnRl bF9kaWdfcG9ydC0+c2F2ZWRfcG9ydF9iaXRzID0gc2F2ZWRfcG9ydF9iaXRzOwo+ICAJaW50ZWxf ZGlnX3BvcnQtPm1heF9sYW5lcyA9IG1heF9sYW5lczsKPiAgCj4gIAkvKgo+IEBAIC0zMzA2LDEx ICszMzU0LDExIEBAIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg ZW51bSBwb3J0IHBvcnQpCj4gIAkJfQo+ICAJfQo+ICAKPiAtCWludGVsX2VuY29kZXItPnR5cGUg PSBJTlRFTF9PVVRQVVRfVU5LTk9XTjsKPiArCWludGVsX2VuY29kZXItPnR5cGUgPSBlbmNvZGVy X3R5cGU7Cj4gIAlpbnRlbF9lbmNvZGVyLT5jcnRjX21hc2sgPSAoMSA8PCAwKSB8ICgxIDw8IDEp IHwgKDEgPDwgMik7Cj4gIAlpbnRlbF9lbmNvZGVyLT5jbG9uZWFibGUgPSAwOwo+ICAKPiAtCWlm IChpbml0X2RwKSB7Cj4gKwlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRf RElTUExBWVBPUlQpIHsKPiAgCQlpZiAoIWludGVsX2RkaV9pbml0X2RwX2Nvbm5lY3RvcihpbnRl bF9kaWdfcG9ydCkpCj4gIAkJCWdvdG8gZXJyOwo+ICAKPiBAQCAtMzMyNywxNCArMzM3NSw3NCBA QCB2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBw b3J0KQo+ICAKPiAgCS8qIEluIHRoZW9yeSB3ZSBkb24ndCBuZWVkIHRoZSBlbmNvZGVyLT50eXBl IGNoZWNrLCBidXQgbGVhdmUgaXQganVzdCBpbgo+ICAJICogY2FzZSB3ZSBoYXZlIHNvbWUgcmVh bGx5IGJhZCBWQlRzLi4uICovCj4gLQlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9P VVRQVVRfRURQICYmIGluaXRfaGRtaSkgewo+ICsJaWYgKGludGVsX2VuY29kZXItPnR5cGUgPT0g SU5URUxfT1VUUFVUX0hETUkpIHsKPiAgCQlpZiAoIWludGVsX2RkaV9pbml0X2hkbWlfY29ubmVj dG9yKGludGVsX2RpZ19wb3J0KSkKPiAgCQkJZ290byBlcnI7Cj4gIAl9Cj4gIAo+IC0JcmV0dXJu Owo+ICsJcmV0dXJuIGludGVsX2VuY29kZXItPnR5cGU7Cj4gIAo+ICBlcnI6Cj4gIAlkcm1fZW5j b2Rlcl9jbGVhbnVwKGVuY29kZXIpOwo+ICAJa2ZyZWUoaW50ZWxfZGlnX3BvcnQpOwo+ICsKPiAr CXJldHVybiAtRU5PREVWOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwl1aW50MzJfdCBzYXZlZF9wb3J0 X2JpdHM7Cj4gKwlib29sIGluaXRfaGRtaSwgaW5pdF9kcDsKPiArCWludCBtYXhfbGFuZXM7Cj4g Kwo+ICsJaWYgKEk5MTVfUkVBRChERElfQlVGX0NUTChQT1JUX0EpKSAmIERESV9BXzRfTEFORVMp IHsKPiArCQlzd2l0Y2ggKHBvcnQpIHsKPiArCQljYXNlIFBPUlRfQToKPiArCQkJbWF4X2xhbmVz ID0gNDsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBQT1JUX0U6Cj4gKwkJCW1heF9sYW5lcyA9IDA7 Cj4gKwkJCWJyZWFrOwo+ICsJCWRlZmF1bHQ6Cj4gKwkJCW1heF9sYW5lcyA9IDQ7Cj4gKwkJCWJy ZWFrOwo+ICsJCX0KPiArCX0gZWxzZSB7Cj4gKwkJc3dpdGNoIChwb3J0KSB7Cj4gKwkJY2FzZSBQ T1JUX0E6Cj4gKwkJCW1heF9sYW5lcyA9IDI7Cj4gKwkJCWJyZWFrOwo+ICsJCWNhc2UgUE9SVF9F Ogo+ICsJCQltYXhfbGFuZXMgPSAyOwo+ICsJCQlicmVhazsKPiArCQlkZWZhdWx0Ogo+ICsJCQlt YXhfbGFuZXMgPSA0Owo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaW5pdF9oZG1p ID0gKGRldl9wcml2LT52YnQuZGRpX3BvcnRfaW5mb1twb3J0XS5zdXBwb3J0c19kdmkgfHwKPiAr CQkgICAgIGRldl9wcml2LT52YnQuZGRpX3BvcnRfaW5mb1twb3J0XS5zdXBwb3J0c19oZG1pKTsK PiArCWluaXRfZHAgPSBkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9bcG9ydF0uc3VwcG9ydHNf ZHA7Cj4gKwlpZiAoIWluaXRfZHAgJiYgIWluaXRfaGRtaSkgewo+ICsJCURSTV9ERUJVR19LTVMo IlZCVCBzYXlzIHBvcnQgJWMgaXMgbm90IERWSS9IRE1JL0RQIGNvbXBhdGlibGUsIHJlc3BlY3Qg aXRcbiIsCj4gKwkJCSAgICAgIHBvcnRfbmFtZShwb3J0KSk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ ICsKPiArCXNhdmVkX3BvcnRfYml0cyA9IEk5MTVfUkVBRChERElfQlVGX0NUTChwb3J0KSkgJgo+ ICsJCShERElfQlVGX1BPUlRfUkVWRVJTQUwgfCBERElfQV80X0xBTkVTKTsKPiArCj4gKwlpZiAo aW5pdF9kcCkgewo+ICsJCWludCByZXQgPSBpbnRlbF9kZGlfaW5pdF9yb2xlKGRldiwgcG9ydCwg SU5URUxfT1VUUFVUX0RJU1BMQVlQT1JULAo+ICsJCQkJCSAgICAgIHNhdmVkX3BvcnRfYml0cywg bWF4X2xhbmVzKTsKPiArCQkvKiBEb24ndCByZWdpc3RlciB0aGUgSERNSSBjb25uZWN0b3IvZW5j b2RlciB3aGVuIHdlIGhhdmUgZURQICovCj4gKwkJaWYgKHJldCA9PSBJTlRFTF9PVVRQVVRfRURQ KQo+ICsJCQlpbml0X2hkbWkgPSBmYWxzZTsKPiArCX0KPiArCj4gKwlpZiAoaW5pdF9oZG1pKQo+ ICsJCWludGVsX2RkaV9pbml0X3JvbGUoZGV2LCBwb3J0LCBJTlRFTF9PVVRQVVRfSERNSSwKPiAr CQkJCSAgICBzYXZlZF9wb3J0X2JpdHMsIG1heF9sYW5lcyk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggYmM3YWFhM2M0MzFlLi5mYzFkNzM4N2ViMTIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTUyNTIsMTMgKzUyNTIs OSBAQCBzdGF0aWMgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3J0X3RvX2F1eF9w b3dlcl9kb21haW4oZW51bSBwb3J0IHBvcnQpCj4gIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9k b21haW4KPiAgaW50ZWxfZGlzcGxheV9wb3J0X3Bvd2VyX2RvbWFpbihzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqaW50ZWxfZW5jb2RlcikKPiAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGlu dGVsX2VuY29kZXItPmJhc2UuZGV2Owo+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQ7Cj4gIAo+ICAJc3dpdGNoIChpbnRlbF9lbmNvZGVyLT50eXBlKSB7Cj4gLQlj YXNlIElOVEVMX09VVFBVVF9VTktOT1dOOgo+IC0JCS8qIE9ubHkgRERJIHBsYXRmb3JtcyBzaG91 bGQgZXZlciB1c2UgdGhpcyBvdXRwdXQgdHlwZSAqLwo+IC0JCVdBUk5fT05fT05DRSghSEFTX0RE SShkZXYpKTsKPiAgCWNhc2UgSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUOgo+ICAJY2FzZSBJTlRF TF9PVVRQVVRfSERNSToKPiAgCWNhc2UgSU5URUxfT1VUUFVUX0VEUDoKPiBAQCAtNTI3OSwyMCAr NTI3NSw5IEBAIGludGVsX2Rpc3BsYXlfcG9ydF9wb3dlcl9kb21haW4oc3RydWN0IGludGVsX2Vu Y29kZXIgKmludGVsX2VuY29kZXIpCj4gIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4K PiAgaW50ZWxfZGlzcGxheV9wb3J0X2F1eF9wb3dlcl9kb21haW4oc3RydWN0IGludGVsX2VuY29k ZXIgKmludGVsX2VuY29kZXIpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRl bF9lbmNvZGVyLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0Owo+ICAKPiAgCXN3aXRjaCAoaW50ZWxfZW5jb2Rlci0+dHlwZSkgewo+IC0JY2Fz ZSBJTlRFTF9PVVRQVVRfVU5LTk9XTjoKPiAtCWNhc2UgSU5URUxfT1VUUFVUX0hETUk6Cj4gLQkJ LyoKPiAtCQkgKiBPbmx5IERESSBwbGF0Zm9ybXMgc2hvdWxkIGV2ZXIgdXNlIHRoZXNlIG91dHB1 dCB0eXBlcy4KPiAtCQkgKiBXZSBjYW4gZ2V0IGhlcmUgYWZ0ZXIgdGhlIEhETUkgZGV0ZWN0IGNv ZGUgaGFzIGFscmVhZHkgc2V0Cj4gLQkJICogdGhlIHR5cGUgb2YgdGhlIHNoYXJlZCBlbmNvZGVy LiBTaW5jZSB3ZSBjYW4ndCBiZSBzdXJlCj4gLQkJICogd2hhdCdzIHRoZSBzdGF0dXMgb2YgdGhl IGdpdmVuIGNvbm5lY3RvcnMsIHBsYXkgc2FmZSBhbmQKPiAtCQkgKiBydW4gdGhlIERQIGRldGVj dGlvbiB0b28uCj4gLQkJICovCj4gLQkJV0FSTl9PTl9PTkNFKCFIQVNfRERJKGRldikpOwo+ICAJ Y2FzZSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQ6Cj4gIAljYXNlIElOVEVMX09VVFBVVF9FRFA6 Cj4gIAkJaW50ZWxfZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmludGVsX2VuY29kZXItPmJh c2UpOwo+IEBAIC0xMjI4Myw5ICsxMjI2OCw2IEBAIHN0YXRpYyBib29sIGNoZWNrX2RpZ2l0YWxf cG9ydF9jb25mbGljdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAKPiAgCQlz d2l0Y2ggKGVuY29kZXItPnR5cGUpIHsKPiAgCQkJdW5zaWduZWQgaW50IHBvcnRfbWFzazsKPiAt CQljYXNlIElOVEVMX09VVFBVVF9VTktOT1dOOgo+IC0JCQlpZiAoV0FSTl9PTighSEFTX0RESShk ZXYpKSkKPiAtCQkJCWJyZWFrOwo+ICAJCWNhc2UgSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUOgo+ ICAJCWNhc2UgSU5URUxfT1VUUFVUX0hETUk6Cj4gIAkJY2FzZSBJTlRFTF9PVVRQVVRfRURQOgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IDdkMzU0YjFlNWU1Zi4uMWQzMWFhMjk2YWFh IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTQ2MDEsOCArNDYwMSw2IEBAIGlu dGVsX2RwX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNl KQo+ICAKPiAgCWlmIChpbnRlbF9kcC0+aXNfbXN0KSB7Cj4gIAkJLyogTVNUIGRldmljZXMgYXJl IGRpc2Nvbm5lY3RlZCBmcm9tIGEgbW9uaXRvciBQT1YgKi8KPiAtCQlpZiAoaW50ZWxfZW5jb2Rl ci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQo+IC0JCQlpbnRlbF9lbmNvZGVyLT50eXBlID0g SU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUOwo+ICAJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rp c2Nvbm5lY3RlZDsKPiAgCX0KPiAgCj4gQEAgLTQ2MzIsOCArNDYzMCw2IEBAIGludGVsX2RwX2Rl dGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQo+ICAJaWYg KHJldCkgewo+ICAJCS8qIGlmIHdlIGFyZSBpbiBNU1QgbW9kZSB0aGVuIHRoaXMgY29ubmVjdG9y Cj4gIAkJICAgd29uJ3QgYXBwZWFyIGNvbm5lY3RlZCBvciBoYXZlIGFueXRoaW5nIHdpdGggRURJ RCBvbiBpdCAqLwo+IC0JCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9F RFApCj4gLQkJCWludGVsX2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQ7 Cj4gIAkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7Cj4gIAkJZ290byBv dXQ7Cj4gIAl9Cj4gQEAgLTQ2NDgsOCArNDY0NCw2IEBAIGludGVsX2RwX2RldGVjdChzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQo+ICAKPiAgCWludGVsX2RwX3Nl dF9lZGlkKGludGVsX2RwKTsKPiAgCj4gLQlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRF TF9PVVRQVVRfRURQKQo+IC0JCWludGVsX2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRfRElT UExBWVBPUlQ7Cj4gIAlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKPiAgCj4g IAkvKiBUcnkgdG8gcmVhZCB0aGUgc291cmNlIG9mIHRoZSBpbnRlcnJ1cHQgKi8KPiBAQCAtNDY5 Miw5ICs0Njg2LDYgQEAgaW50ZWxfZHBfZm9yY2Uoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiAgCWludGVsX2RwX3NldF9lZGlkKGludGVsX2RwKTsKPiAgCj4gIAlpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiAtCj4gLQlpZiAoaW50ZWxf ZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQo+IC0JCWludGVsX2VuY29kZXItPnR5 cGUgPSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQ7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaW50 ZWxfZHBfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gQEAgLTQ5 NjksOSArNDk2MCw5IEBAIGludGVsX2RwX2hwZF9wdWxzZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCwgYm9vbCBsb25nX2hwZCkKPiAgCWVudW0gaW50ZWxfZGlzcGxh eV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWluOwo+ICAJZW51bSBpcnFyZXR1cm4gcmV0ID0gSVJR X05PTkU7Cj4gIAo+IC0JaWYgKGludGVsX2RpZ19wb3J0LT5iYXNlLnR5cGUgIT0gSU5URUxfT1VU UFVUX0VEUCAmJgo+IC0JICAgIGludGVsX2RpZ19wb3J0LT5iYXNlLnR5cGUgIT0gSU5URUxfT1VU UFVUX0hETUkpCj4gLQkJaW50ZWxfZGlnX3BvcnQtPmJhc2UudHlwZSA9IElOVEVMX09VVFBVVF9E SVNQTEFZUE9SVDsKPiArCWlmIChXQVJOX09OX09OQ0UoaW50ZWxfZGlnX3BvcnQtPmJhc2UudHlw ZSAhPSBJTlRFTF9PVVRQVVRfRURQICYmCj4gKwkJCSBpbnRlbF9kaWdfcG9ydC0+YmFzZS50eXBl ICE9IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCkpCj4gKwkJcmV0dXJuIElSUV9IQU5ETEVEOwo+ ICAKPiAgCWlmIChsb25nX2hwZCAmJiBpbnRlbF9kaWdfcG9ydC0+YmFzZS50eXBlID09IElOVEVM X09VVFBVVF9FRFApIHsKPiAgCQkvKgo+IEBAIC01ODE1LDYgKzU4MDYsOSBAQCBpbnRlbF9kcF9p bml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwK PiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7Cj4gIAlpbnQgdHlwZSwg cmV0Owo+ICAKPiArCWlmIChXQVJOX09OKGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VU UFVUX0RJU1BMQVlQT1JUKSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICAJaWYgKFdBUk4oaW50 ZWxfZGlnX3BvcnQtPm1heF9sYW5lcyA8IDEsCj4gIAkJICJOb3QgZW5vdWdoIGxhbmVzICglZCkg Zm9yIERQIG9uIHBvcnQgJWNcbiIsCj4gIAkJIGludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXMsIHBv cnRfbmFtZShwb3J0KSkpCj4gQEAgLTU4NTEsMTEgKzU4NDUsNiBAQCBpbnRlbF9kcF9pbml0X2Nv bm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiAgCWVs c2UKPiAgCQl0eXBlID0gRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0Owo+ICAKPiAtCS8q Cj4gLQkgKiBGb3IgZURQIHdlIGFsd2F5cyBzZXQgdGhlIGVuY29kZXIgdHlwZSB0byBJTlRFTF9P VVRQVVRfRURQLCBidXQKPiAtCSAqIGZvciBEUCB0aGUgZW5jb2RlciB0eXBlIGNhbiBiZSBzZXQg YnkgdGhlIGNhbGxlciB0bwo+IC0JICogSU5URUxfT1VUUFVUX1VOS05PV04gZm9yIERESSwgc28g ZG9uJ3QgcmV3cml0ZSBpdC4KPiAtCSAqLwo+ICAJaWYgKHR5cGUgPT0gRFJNX01PREVfQ09OTkVD VE9SX2VEUCkKPiAgCQlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0VEUDsKPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBhOGE4NGI4YzJiYWMuLjllNWRiM2Q3 MWUxMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTEwMyw4ICsxMDMsNyBA QCBlbnVtIGludGVsX291dHB1dF90eXBlIHsKPiAgCUlOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCA9 IDcsCj4gIAlJTlRFTF9PVVRQVVRfRURQID0gOCwKPiAgCUlOVEVMX09VVFBVVF9EU0kgPSA5LAo+ IC0JSU5URUxfT1VUUFVUX1VOS05PV04gPSAxMCwKPiAtCUlOVEVMX09VVFBVVF9EUF9NU1QgPSAx MSwKPiArCUlOVEVMX09VVFBVVF9EUF9NU1QgPSAxMCwKPiAgfTsKPiAgCj4gICNkZWZpbmUgSU5U RUxfRFZPX0NISVBfTk9ORSAwCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+IGluZGV4IDg5 NTE4OWFiZmQ1Ni4uNzVlYTk1MTVhOWNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkbWkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWku Ywo+IEBAIC0yMDM0LDYgKzIwMzQsOSBAQCB2b2lkIGludGVsX2hkbWlfaW5pdF9jb25uZWN0b3Io c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gIAllbnVtIHBvcnQg cG9ydCA9IGludGVsX2RpZ19wb3J0LT5wb3J0Owo+ICAJdWludDhfdCBhbHRlcm5hdGVfZGRjX3Bp bjsKPiAgCj4gKwlpZiAoV0FSTl9PTihpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBV VF9IRE1JKSkKPiArCQlyZXR1cm47Cj4gKwo+ICAJaWYgKFdBUk4oaW50ZWxfZGlnX3BvcnQtPm1h eF9sYW5lcyA8IDQsCj4gIAkJICJOb3QgZW5vdWdoIGxhbmVzICglZCkgZm9yIEhETUkgb24gcG9y dCAlY1xuIiwKPiAgCQkgaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcywgcG9ydF9uYW1lKHBvcnQp KSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKPiBpbmRleCBlMzYyYTMwNzc2 ZmEuLmExNTQ1OWE0NTFjMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9vcHJlZ2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24u Ywo+IEBAIC0zNjAsNyArMzYwLDYgQEAgaW50IGludGVsX29wcmVnaW9uX25vdGlmeV9lbmNvZGVy KHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ICAJY2FzZSBJTlRFTF9PVVRQ VVRfQU5BTE9HOgo+ICAJCXR5cGUgPSBESVNQTEFZX1RZUEVfQ1JUOwo+ICAJCWJyZWFrOwo+IC0J Y2FzZSBJTlRFTF9PVVRQVVRfVU5LTk9XTjoKPiAgCWNhc2UgSU5URUxfT1VUUFVUX0RJU1BMQVlQ T1JUOgo+ICAJY2FzZSBJTlRFTF9PVVRQVVRfSERNSToKPiAgCWNhc2UgSU5URUxfT1VUUFVUX0RQ X01TVDoKPiAtLSAKPiAyLjQuMTAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIs IEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==