From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sagar Arun Kamble Subject: Re: [PATCH 5/5] drm/i915: Add full pipe rotation Date: Wed, 19 Feb 2014 15:55:58 +0530 Message-ID: <1392805558.28501.59.camel@sagar-desktop> References: <1392239704-21776-1-git-send-email-ville.syrjala@linux.intel.com> <1392239704-21776-6-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: In-Reply-To: <1392239704-21776-6-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: ville.syrjala@linux.intel.com Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org UmV2aWV3ZWQtYnk6IFNhZ2FyIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVAaW50ZWwuY29tPgoKT24g V2VkLCAyMDE0LTAyLTEyIGF0IDIzOjE1ICswMjAwLCB2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbSB3cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXgu aW50ZWwuY29tPgo+IAo+IFdlIGNhbiBwcmV0ZW5kIHRoYXQgd2UgY2FuIHJvdGF0ZSB0aGUgZW50 aXJlIHBpcGUgYnkgcm90YXRpbmcgYWxsIHRoZQo+IHBsYW5lcyBhbmQgYWRqdXN0aW5nIHRoZWly IHBvc2l0aW9ucyBhcHByb3ByaWF0ZWx5LiBBZGQgYSAicm90YXRpb24iCj4gcHJvcGVydHkgb24g dGhlIGNydGMgd2hpY2ggd2lsbCBkbyB0aGlzLgo+IAo+IFRoZSBtYWluIHVwc2hvdCBvZiBkb2lu ZyB0aGUgZnVsbCBwaXBlIHJvdGF0aW9uIGluc3RlYWQgb2Ygcm90YXRpbmcgYWxsCj4gdGhlIHBs YW5lcyBpbmRpdmlkdWFsbHkgaXMgdGhhdCB0aGUgcGxhbmUgcG9zaXRpb25zIHR1cm4gb3V0IGNv cnJlY3QKPiBhdXRvbWFnaWNhbGx5LiBTbyB1c2Vyc3BhY2UgZG9lc24ndCBuZWVkIHRvIGRvIGFu eXRoaW5nIGV4Y2VwdCB0b2dnbGUKPiB0aGUgcHJvcGVydHkgYW5kIGNvbnRpbnVlIGFzIGlmIG5v dGhpbmcgaGFkIGNoYW5nZWQuCj4gCj4gVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBpcyBwcmV0 dHkgbXVjaCB0cml2aWFsIHRoYW5rcyB0byBkcm1fcmVjdAo+IGFuZCBkcm1fcm90YXRpb25fY2hh aW4oKSA7KQo+IAo+IENjOiBTYWdhciBLYW1ibGUgPHNhZ2FyLmEua2FtYmxlQGludGVsLmNvbT4K PiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jICAgICAgfCAg IDYgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTU0ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg ICAgICB8ICAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAg MjEgKysrLS0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAxNjQgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gaW5kZXggM2RkOWFiYi4uYjU5YmZm MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+IEBAIC0xOTE0LDYgKzE5MTQsMTIgQEAg dm9pZCBpOTE1X2RyaXZlcl9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpCj4gIAkJ CQkJCWRldl9wcml2LT5yb3RhdGlvbl9wcm9wZXJ0eSwKPiAgCQkJCQkJcGxhbmUtPnJvdGF0aW9u KTsKPiAgCQl9Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShjcnRjLCAmZGV2LT5tb2RlX2NvbmZp Zy5jcnRjX2xpc3QsIGJhc2UuaGVhZCkgewo+ICsJCQljcnRjLT5waXBlX3JvdGF0aW9uID0gQklU KERSTV9ST1RBVEVfMCk7Cj4gKwkJCWRybV9vYmplY3RfcHJvcGVydHlfc2V0X3ZhbHVlKCZjcnRj LT5iYXNlLmJhc2UsCj4gKwkJCQkJCSAgICAgIGRldl9wcml2LT5yb3RhdGlvbl9wcm9wZXJ0eSwK PiArCQkJCQkJICAgICAgY3J0Yy0+cGlwZV9yb3RhdGlvbik7Cj4gKwkJfQo+ICAJfQo+ICAKPiAg CWlmIChkZXZfcHJpdi0+Y3Vyc29yX3JvdGF0aW9uX3Byb3BlcnR5KSB7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGU5NDE2N2IuLjFiNzRkMjQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTM5LDYgKzM5LDcgQEAKPiAgI2luY2x1 ZGUgImk5MTVfdHJhY2UuaCIKPiAgI2luY2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+Cj4gICNp bmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3JlY3Qu aD4KPiAgI2luY2x1ZGUgPGxpbnV4L2RtYV9yZW1hcHBpbmcuaD4KPiAgCj4gIHN0YXRpYyB2b2lk IGludGVsX2luY3JlYXNlX3BsbGNsb2NrKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gQEAgLTIw NjAsNiArMjA2MSw4IEBAIHN0YXRpYyBpbnQgaTl4eF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9j cnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgCXUzMiBkc3BjbnRyOwo+ ICAJdTMyIHJlZzsKPiAgCWludCBwaXhlbF9zaXplOwo+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9u ID0gZHJtX3JvdGF0aW9uX2NoYWluKGludGVsX2NydGMtPnBpcGVfcm90YXRpb24sCj4gKwkJCQkJ CSAgIGludGVsX2NydGMtPnByaW1hcnlfcm90YXRpb24pOwo+ICAKPiAgCXN3aXRjaCAocGxhbmUp IHsKPiAgCWNhc2UgMDoKPiBAQCAtMjEzMyw3ICsyMTM2LDcgQEAgc3RhdGljIGludCBpOXh4X3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiLAo+ICAJCWludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0gbGluZWFyX29mZnNldDsKPiAg CX0KPiAgCj4gLQlpZiAoaW50ZWxfY3J0Yy0+cHJpbWFyeV9yb3RhdGlvbiA9PSBCSVQoRFJNX1JP VEFURV8xODApKSB7Cj4gKwlpZiAocm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ ICAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1JPVEFURV8xODA7Cj4gIAo+ICAJCXggKz0gKGludGVs X2NydGMtPmNvbmZpZy5waXBlX3NyY193IC0gMSk7Cj4gQEAgLTIxNzMsNiArMjE3Niw4IEBAIHN0 YXRpYyBpbnQgaXJvbmxha2VfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAg CXUzMiBkc3BjbnRyOwo+ICAJdTMyIHJlZzsKPiAgCWludCBwaXhlbF9zaXplOwo+ICsJdW5zaWdu ZWQgaW50IHJvdGF0aW9uID0gZHJtX3JvdGF0aW9uX2NoYWluKGludGVsX2NydGMtPnBpcGVfcm90 YXRpb24sCj4gKwkJCQkJCSAgIGludGVsX2NydGMtPnByaW1hcnlfcm90YXRpb24pOwo+ICAKPiAg CXN3aXRjaCAocGxhbmUpIHsKPiAgCWNhc2UgMDoKPiBAQCAtMjIzOCw3ICsyMjQzLDcgQEAgc3Rh dGljIGludCBpcm9ubGFrZV91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJ CQkJCSAgICAgICBmYi0+cGl0Y2hlc1swXSk7Cj4gIAlsaW5lYXJfb2Zmc2V0IC09IGludGVsX2Ny dGMtPmRzcGFkZHJfb2Zmc2V0Owo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5wcmltYXJ5X3JvdGF0 aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiArCWlmIChyb3RhdGlvbiA9PSBCSVQoRFJN X1JPVEFURV8xODApKSB7Cj4gIAkJZHNwY250ciB8PSBESVNQUExBTkVfUk9UQVRFXzE4MDsKPiAg Cj4gIAkJaWYgKCFJU19IQVNXRUxMKGRldikgJiYgIUlTX0JST0FEV0VMTChkZXYpKSB7Cj4gQEAg LTc0NjgsNiArNzQ3Myw4IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX2N1cnNvcihzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsIHUzMiBiYXNlLCBib29sIGZvcmNlKQo+ICAJYm9vbCB2aXNpYmxlID0g YmFzZSAhPSAwOwo+ICAKPiAgCWlmIChmb3JjZSB8fCBpbnRlbF9jcnRjLT5jdXJzb3JfdmlzaWJs ZSAhPSB2aXNpYmxlKSB7Cj4gKwkJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gZHJtX3JvdGF0aW9u X2NoYWluKGludGVsX2NydGMtPnBpcGVfcm90YXRpb24sCj4gKwkJCQkJCQkgICBpbnRlbF9jcnRj LT5jdXJzb3Jfcm90YXRpb24pOwo+ICAJCXVpbnQzMl90IGNudGwgPSBJOTE1X1JFQUQoQ1VSQ05U UihwaXBlKSk7Cj4gIAkJaWYgKGJhc2UpIHsKPiAgCQkJY250bCAmPSB+KENVUlNPUl9NT0RFIHwg TUNVUlNPUl9QSVBFX1NFTEVDVCk7Cj4gQEAgLTc0NzcsNyArNzQ4NCw3IEBAIHN0YXRpYyB2b2lk IGk5eHhfdXBkYXRlX2N1cnNvcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUzMiBiYXNlLCBib29s IGZvcmNlKQo+ICAJCQljbnRsICY9IH4oQ1VSU09SX01PREUgfCBNQ1VSU09SX0dBTU1BX0VOQUJM RSk7Cj4gIAkJCWNudGwgfD0gQ1VSU09SX01PREVfRElTQUJMRTsKPiAgCQl9Cj4gLQkJaWYgKGlu dGVsX2NydGMtPmN1cnNvcl9yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKQo+ICsJCWlm IChyb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKQo+ICAJCQljbnRsIHw9IENVUlNPUl9S T1RBVEVfMTgwOwo+ICAJCWVsc2UKPiAgCQkJY250bCAmPSB+Q1VSU09SX1JPVEFURV8xODA7Cj4g QEAgLTc1MDAsNiArNzUwNyw4IEBAIHN0YXRpYyB2b2lkIGl2Yl91cGRhdGVfY3Vyc29yKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywgdTMyIGJhc2UsIGJvb2wgZm9yY2UpCj4gIAlib29sIHZpc2libGUg PSBiYXNlICE9IDA7Cj4gIAo+ICAJaWYgKGZvcmNlIHx8IGludGVsX2NydGMtPmN1cnNvcl92aXNp YmxlICE9IHZpc2libGUpIHsKPiArCQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBkcm1fcm90YXRp b25fY2hhaW4oaW50ZWxfY3J0Yy0+cGlwZV9yb3RhdGlvbiwKPiArCQkJCQkJCSAgIGludGVsX2Ny dGMtPmN1cnNvcl9yb3RhdGlvbik7Cj4gIAkJdWludDMyX3QgY250bCA9IEk5MTVfUkVBRChDVVJD TlRSX0lWQihwaXBlKSk7Cj4gIAkJaWYgKGJhc2UpIHsKPiAgCQkJY250bCAmPSB+Q1VSU09SX01P REU7Cj4gQEAgLTc1MTIsNyArNzUyMSw3IEBAIHN0YXRpYyB2b2lkIGl2Yl91cGRhdGVfY3Vyc29y KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgdTMyIGJhc2UsIGJvb2wgZm9yY2UpCj4gIAkJCWNudGwg fD0gQ1VSU09SX1BJUEVfQ1NDX0VOQUJMRTsKPiAgCQkJY250bCAmPSB+Q1VSU09SX1RSSUNLTEVf RkVFRF9ESVNBQkxFOwo+ICAJCX0KPiAtCQlpZiAoaW50ZWxfY3J0Yy0+Y3Vyc29yX3JvdGF0aW9u ID09IEJJVChEUk1fUk9UQVRFXzE4MCkpCj4gKwkJaWYgKHJvdGF0aW9uID09IEJJVChEUk1fUk9U QVRFXzE4MCkpCj4gIAkJCWNudGwgfD0gQ1VSU09SX1JPVEFURV8xODA7Cj4gIAkJZWxzZQo+ICAJ CQljbnRsICY9IH5DVVJTT1JfUk9UQVRFXzE4MDsKPiBAQCAtNzUzOCwxMCArNzU0NywyNCBAQCBz dGF0aWMgdm9pZCBpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRybV9jcnRjICpjcnRj LAo+ICAJaW50IHkgPSBpbnRlbF9jcnRjLT5jdXJzb3JfeTsKPiAgCXUzMiBiYXNlID0gMCwgcG9z ID0gMDsKPiAgCWJvb2wgdmlzaWJsZTsKPiArCXN0cnVjdCBkcm1fcmVjdCByID0gewo+ICsJCS54 MSA9IHgsCj4gKwkJLngyID0geCArIGludGVsX2NydGMtPmN1cnNvcl93aWR0aCwKPiArCQkueTEg PSB5LAo+ICsJCS55MiA9IHkgKyBpbnRlbF9jcnRjLT5jdXJzb3JfaGVpZ2h0LAo+ICsJfTsKPiAg Cj4gIAlpZiAob24pCj4gIAkJYmFzZSA9IGludGVsX2NydGMtPmN1cnNvcl9hZGRyOwo+ICAKPiAr CWRybV9yZWN0X3JvdGF0ZSgmciwKPiArCQkJaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cs Cj4gKwkJCWludGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY19oLAo+ICsJCQlpbnRlbF9jcnRjLT5w aXBlX3JvdGF0aW9uKTsKPiArCj4gKwl4ID0gci54MTsKPiArCXkgPSByLnkxOwo+ICsKPiAgCWlm ICh4ID49IGludGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY193KQo+ICAJCWJhc2UgPSAwOwo+ICAK PiBAQCAtODgxOCw2ICs4ODQxLDY2IEBAIGZyZWVfd29yazoKPiAgCXJldHVybiByZXQ7Cj4gIH0K PiAgCj4gK3N0YXRpYyBpbnQgaW50ZWxfc2V0X3ByaW1hcnlfcGxhbmVfcm90YXRpb24oc3RydWN0 IGludGVsX2NydGMgKmNydGMsCj4gKwkJCQkJICAgIHVuc2lnbmVkIGludCByb3RhdGlvbikKPiAr ewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXVuc2ln bmVkIGludCBvbGRfcm90YXRpb247Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwlvbGRfcm90YXRp b24gPSBjcnRjLT5wcmltYXJ5X3JvdGF0aW9uOwo+ICsJY3J0Yy0+cHJpbWFyeV9yb3RhdGlvbiA9 IHJvdGF0aW9uOwo+ICsKPiArCWlmICghY3J0Yy0+YWN0aXZlKQo+ICsJCXJldHVybiAwOwo+ICsK PiArCXJvdGF0aW9uID0gZHJtX3JvdGF0aW9uX2NoYWluKGNydGMtPnBpcGVfcm90YXRpb24sCj4g KwkJCQkgICAgICBjcnRjLT5wcmltYXJ5X3JvdGF0aW9uKTsKPiArCj4gKwlpbnRlbF9jcnRjX3dh aXRfZm9yX3BlbmRpbmdfZmxpcHMoJmNydGMtPmJhc2UpOwo+ICsKPiArCS8qIEZCQyBkb2VzIG5v dCB3b3JrIG9uIHNvbWUgcGxhdGZvcm1zIGZvciByb3RhdGVkIHBsYW5lcyAqLwo+ICsJaWYgKGRl dl9wcml2LT5mYmMucGxhbmUgPT0gY3J0Yy0+cGxhbmUgJiYKPiArCSAgICBJTlRFTF9JTkZPKGRl diktPmdlbiA8PSA0ICYmICFJU19HNFgoZGV2KSAmJgo+ICsJICAgIHJvdGF0aW9uICE9IEJJVChE Uk1fUk9UQVRFXzApKQo+ICsJCWludGVsX2Rpc2FibGVfZmJjKGRldik7Cj4gKwo+ICsJcmV0ID0g ZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3BsYW5lKCZjcnRjLT5iYXNlLCBjcnRjLT5iYXNlLmZi LCAwLCAwKTsKPiArCWlmIChyZXQpCj4gKwkJY3J0Yy0+cHJpbWFyeV9yb3RhdGlvbiA9IG9sZF9y b3RhdGlvbjsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRl bF9zZXRfY3Vyc29yX3BsYW5lX3JvdGF0aW9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICsJ CQkJCSAgICB1bnNpZ25lZCBpbnQgcm90YXRpb24pCj4gK3sKPiArCWNydGMtPmN1cnNvcl9yb3Rh dGlvbiA9IHJvdGF0aW9uOwo+ICsKPiArCWlmIChjcnRjLT5hY3RpdmUpCj4gKwkJaW50ZWxfY3J0 Y191cGRhdGVfY3Vyc29yKCZjcnRjLT5iYXNlLCB0cnVlLCB0cnVlKTsKPiArfQo+ICsKPiArc3Rh dGljIGludCBpbnRlbF91cGRhdGVfcGxhbmVzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICt7 Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lOwo+ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkocGxhbmUsICZk ZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QsIGJhc2UuaGVhZCkgewo+ICsJCWludCByZXQ7Cj4g Kwo+ICsJCWlmIChwbGFuZS0+cGlwZSAhPSBjcnRjLT5waXBlKQo+ICsJCQljb250aW51ZTsKPiAr Cj4gKwkJcmV0ID0gaW50ZWxfcGxhbmVfcmVzdG9yZSgmcGxhbmUtPmJhc2UpOwo+ICsJCWlmIChy ZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g IHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19zZXRfcHJvcGVydHkoc3RydWN0IGRybV9jcnRjICpjcnRj LAo+ICAJCQkJICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3AsCj4gIAkJCQkgICAgdWludDY0 X3QgdmFsKQo+IEBAIC04ODI4LDI3ICs4OTExLDUxIEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19z ZXRfcHJvcGVydHkoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJdWludDY0X3Qgb2xkX3ZhbDsK PiAgCWludCByZXQgPSAtRU5PRU5UOwo+ICAKPiAtCWlmIChwcm9wID09IGRldl9wcml2LT5wbGFu ZV9yb3RhdGlvbl9wcm9wZXJ0eSkgewo+ICsJaWYgKHByb3AgPT0gZGV2X3ByaXYtPnJvdGF0aW9u X3Byb3BlcnR5KSB7Cj4gIAkJLyogZXhhY3RseSBvbmUgcm90YXRpb24gYW5nbGUgcGxlYXNlICov Cj4gIAkJaWYgKGh3ZWlnaHQzMih2YWwgJiAweGYpICE9IDEpCj4gIAkJCXJldHVybiAtRUlOVkFM Owo+ICAKPiAtCQlvbGRfdmFsID0gaW50ZWxfY3J0Yy0+cHJpbWFyeV9yb3RhdGlvbjsKPiAtCQlp bnRlbF9jcnRjLT5wcmltYXJ5X3JvdGF0aW9uID0gdmFsOwo+ICsJCW9sZF92YWwgPSBpbnRlbF9j cnRjLT5waXBlX3JvdGF0aW9uOwo+ICsJCWludGVsX2NydGMtPnBpcGVfcm90YXRpb24gPSB2YWw7 Cj4gIAo+IC0JCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpIHsKPiAtCQkJaW50ZWxfY3J0Y193YWl0 X2Zvcl9wZW5kaW5nX2ZsaXBzKGNydGMpOwo+IC0KPiAtCQkJLyogRkJDIGRvZXMgbm90IHdvcmsg b24gc29tZSBwbGF0Zm9ybXMgZm9yIHJvdGF0ZWQgcGxhbmVzICovCj4gLQkJCWlmIChkZXZfcHJp di0+ZmJjLnBsYW5lID09IGludGVsX2NydGMtPnBsYW5lICYmCj4gLQkJCSAgICBJTlRFTF9JTkZP KGRldiktPmdlbiA8PSA0ICYmICFJU19HNFgoZGV2KSAmJgo+IC0JCQkgICAgaW50ZWxfY3J0Yy0+ cHJpbWFyeV9yb3RhdGlvbiAhPSBCSVQoRFJNX1JPVEFURV8wKSkKPiAtCQkJCWludGVsX2Rpc2Fi bGVfZmJjKGRldik7Cj4gKwkJcmV0ID0gaW50ZWxfc2V0X3ByaW1hcnlfcGxhbmVfcm90YXRpb24o aW50ZWxfY3J0YywKPiArCQkJCQkJICAgICAgIGludGVsX2NydGMtPnByaW1hcnlfcm90YXRpb24p Owo+ICsJCWlmIChyZXQpIHsKPiArCQkJaW50ZWxfY3J0Yy0+cGlwZV9yb3RhdGlvbiA9IG9sZF92 YWw7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICAKPiAtCQkJcmV0ID0gZGV2X3ByaXYtPmRp c3BsYXkudXBkYXRlX3BsYW5lKGNydGMsIGNydGMtPmZiLCAwLCAwKTsKPiAtCQkJaWYgKHJldCkK PiAtCQkJCWludGVsX2NydGMtPnByaW1hcnlfcm90YXRpb24gPSBvbGRfdmFsOwo+ICsJCXJldCA9 IGludGVsX3VwZGF0ZV9wbGFuZXMoaW50ZWxfY3J0Yyk7Cj4gKwkJaWYgKHJldCkgewo+ICsJCQlp bnRlbF9jcnRjLT5waXBlX3JvdGF0aW9uID0gb2xkX3ZhbDsKPiArCj4gKwkJCWlmIChpbnRlbF9z ZXRfcHJpbWFyeV9wbGFuZV9yb3RhdGlvbihpbnRlbF9jcnRjLAo+ICsJCQkJCQkJICAgICBpbnRl bF9jcnRjLT5wcmltYXJ5X3JvdGF0aW9uKSkKPiArCQkJCURSTV9FUlJPUigiZmFpbGVkIHRvIHJl c3RvcmUgcHJpbWFyeSBwbGFuZSByb3RhdGlvblxuIik7Cj4gKwkJCWlmIChpbnRlbF91cGRhdGVf cGxhbmVzKGludGVsX2NydGMpKQo+ICsJCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmVzdG9yZSBz cHJpdGUgcGxhbmUgcm90YXRpb25cbiIpOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICAJCX0KPiArCj4g KwkJaW50ZWxfc2V0X2N1cnNvcl9wbGFuZV9yb3RhdGlvbihpbnRlbF9jcnRjLAo+ICsJCQkJCQlp bnRlbF9jcnRjLT5jdXJzb3Jfcm90YXRpb24pOwo+ICsKPiArCQlyZXR1cm4gMDsKPiArCX0gZWxz ZSBpZiAocHJvcCA9PSBkZXZfcHJpdi0+Y3Vyc29yX3JvdGF0aW9uX3Byb3BlcnR5KSB7Cj4gKwkJ LyogZXhhY3RseSBvbmUgcm90YXRpb24gYW5nbGUgcGxlYXNlICovCj4gKwkJaWYgKGh3ZWlnaHQz Mih2YWwgJiAweGYpICE9IDEpCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCQlpbnRlbF9z ZXRfY3Vyc29yX3BsYW5lX3JvdGF0aW9uKGludGVsX2NydGMsIHZhbCk7Cj4gKwo+ICsJCXJldHVy biAwOwo+ICsJfSBlbHNlIGlmIChwcm9wID09IGRldl9wcml2LT5wbGFuZV9yb3RhdGlvbl9wcm9w ZXJ0eSkgewo+ICsJCS8qIGV4YWN0bHkgb25lIHJvdGF0aW9uIGFuZ2xlIHBsZWFzZSAqLwo+ICsJ CWlmIChod2VpZ2h0MzIodmFsICYgMHhmKSAhPSAxKQo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiAr Cj4gKwkJcmV0dXJuIGludGVsX3NldF9wcmltYXJ5X3BsYW5lX3JvdGF0aW9uKGludGVsX2NydGMs IHZhbCk7Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiBAQCAtMTAzOTcsNiArMTA1MDQsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50 IHBpcGUpCj4gIAlpbnRlbF9jcnRjLT5wbGFuZSA9IHBpcGU7Cj4gIAlpbnRlbF9jcnRjLT5wcmlt YXJ5X3JvdGF0aW9uID0gQklUKERSTV9ST1RBVEVfMCk7Cj4gIAlpbnRlbF9jcnRjLT5jdXJzb3Jf cm90YXRpb24gPSBCSVQoRFJNX1JPVEFURV8wKTsKPiArCWludGVsX2NydGMtPnBpcGVfcm90YXRp b24gPSBCSVQoRFJNX1JPVEFURV8wKTsKPiAgCWlmIChIQVNfRkJDKGRldikgJiYgSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA0KSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygic3dhcHBpbmcgcGlwZXMgJiBw bGFuZXMgZm9yIEZCQ1xuIik7Cj4gIAkJaW50ZWxfY3J0Yy0+cGxhbmUgPSAhcGlwZTsKPiBAQCAt MTA0MjcsNiArMTA1MzUsMTYgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQo+ICAJCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0 eSgmaW50ZWxfY3J0Yy0+YmFzZS5iYXNlLAo+ICAJCQkJCQlkZXZfcHJpdi0+Y3Vyc29yX3JvdGF0 aW9uX3Byb3BlcnR5LAo+ICAJCQkJCQlpbnRlbF9jcnRjLT5jdXJzb3Jfcm90YXRpb24pOwo+ICsK PiArCQlpZiAoIWRldl9wcml2LT5yb3RhdGlvbl9wcm9wZXJ0eSkKPiArCQkJZGV2X3ByaXYtPnJv dGF0aW9uX3Byb3BlcnR5ID0KPiArCQkJCWRybV9tb2RlX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0 eShkZXYsICJyb3RhdGlvbiIsCj4gKwkJCQkJCQkJICBCSVQoRFJNX1JPVEFURV8wKSB8Cj4gKwkJ CQkJCQkJICBCSVQoRFJNX1JPVEFURV8xODApKTsKPiArCQlpZiAoZGV2X3ByaXYtPnJvdGF0aW9u X3Byb3BlcnR5KQo+ICsJCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmaW50ZWxfY3J0Yy0+ YmFzZS5iYXNlLAo+ICsJCQkJCQkgICBkZXZfcHJpdi0+cm90YXRpb25fcHJvcGVydHksCj4gKwkJ CQkJCSAgIGludGVsX2NydGMtPnBpcGVfcm90YXRpb24pOwo+ICAJfQo+ICAKPiAgCWRybV9jcnRj X2hlbHBlcl9hZGQoJmludGVsX2NydGMtPmJhc2UsICZpbnRlbF9oZWxwZXJfZnVuY3MpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNGE3ZjRmMS4uZjk2N2FiZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTMzMyw2ICszMzMsNyBAQCBzdHJ1Y3QgaW50ZWxf Y3J0YyB7Cj4gIAllbnVtIHBsYW5lIHBsYW5lOwo+ICAJdW5zaWduZWQgaW50IHByaW1hcnlfcm90 YXRpb247IC8qIHByaW1hcnkgcGxhbmUgaW4gcmVsYXRpb24gdG8gdGhlIHBpcGUgKi8KPiAgCXVu c2lnbmVkIGludCBjdXJzb3Jfcm90YXRpb247IC8qIGN1cnNvciBwbGFuZSBpbiByZWxhdGlvbiB0 byB0aGUgcGlwZSAqLwo+ICsJdW5zaWduZWQgaW50IHBpcGVfcm90YXRpb247IC8qIGVudGlyZSBw aXBlICovCj4gIAo+ICAJdTggbHV0X3JbMjU2XSwgbHV0X2dbMjU2XSwgbHV0X2JbMjU2XTsKPiAg CS8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggNWViZWI3OC4uMzczNTgxNSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC00NjMsNiArNDYzLDcgQEAgdm9pZCBpbnRl bF91cGRhdGVfZmJjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVz dGVkX21vZGU7Cj4gIAl1bnNpZ25lZCBpbnQgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0Owo+ICsJdW5z aWduZWQgaW50IHJvdGF0aW9uOwo+ICAKPiAgCWlmICghSEFTX0ZCQyhkZXYpKSB7Cj4gIAkJc2V0 X25vX2ZiY19yZWFzb24oZGV2X3ByaXYsIEZCQ19VTlNVUFBPUlRFRCk7Cj4gQEAgLTU1Nyw4ICs1 NTgsMTEgQEAgdm9pZCBpbnRlbF91cGRhdGVfZmJjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IAkJZ290byBvdXRfZGlzYWJsZTsKPiAgCX0KPiAgCj4gKwlyb3RhdGlvbiA9IGRybV9yb3RhdGlv bl9jaGFpbihpbnRlbF9jcnRjLT5waXBlX3JvdGF0aW9uLAo+ICsJCQkJICAgICAgaW50ZWxfY3J0 Yy0+cHJpbWFyeV9yb3RhdGlvbik7Cj4gKwo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9 IDQgJiYgIUlTX0c0WChkZXYpICYmCj4gLQkgICAgaW50ZWxfY3J0Yy0+cHJpbWFyeV9yb3RhdGlv biAhPSBCSVQoRFJNX1JPVEFURV8wKSkgewo+ICsJICAgIHJvdGF0aW9uICE9IEJJVChEUk1fUk9U QVRFXzApKSB7Cj4gIAkJaWYgKHNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LCBGQkNfVU5TVVBQ T1JURURfTU9ERSkpCj4gIAkJCURSTV9ERUJVR19LTVMoIm1vZGUgaW5jb21wYXRpYmxlIHdpdGgg Y29tcHJlc3Npb24sICIKPiAgCQkJCSAgICAgICJkaXNhYmxpbmdcbiIpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggMjkzNjAwNy4uZTFkNTkzYyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTUzLDYgKzUzLDggQEAgdmx2X3VwZGF0ZV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAg CXUzMiBzcHJjdGw7Cj4gIAl1bnNpZ25lZCBsb25nIHNwcnN1cmZfb2Zmc2V0LCBsaW5lYXJfb2Zm c2V0Owo+ICAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxf Zm9ybWF0LCAwKTsKPiArCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IGRybV9yb3RhdGlvbl9jaGFp bih0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlX3JvdGF0aW9uLAo+ICsJCQkJCQkgICBpbnRlbF9w bGFuZS0+cm90YXRpb24pOwo+ICAKPiAgCXNwcmN0bCA9IEk5MTVfUkVBRChTUENOVFIocGlwZSwg cGxhbmUpKTsKPiAgCj4gQEAgLTEzMiw3ICsxMzQsNyBAQCB2bHZfdXBkYXRlX3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJCQkJZmIt PnBpdGNoZXNbMF0pOwo+ICAJbGluZWFyX29mZnNldCAtPSBzcHJzdXJmX29mZnNldDsKPiAgCj4g LQlpZiAoaW50ZWxfcGxhbmUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiAr CWlmIChyb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKSB7Cj4gIAkJc3ByY3RsIHw9IFNQ X1JPVEFURV8xODA7Cj4gIAo+ICAJCXggKz0gc3JjX3c7Cj4gQEAgLTIzOSw2ICsyNDEsOCBAQCBp dmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gIAl1MzIgc3ByY3RsLCBzcHJzY2FsZSA9IDA7Cj4gIAl1bnNpZ25lZCBsb25nIHNw cnN1cmZfb2Zmc2V0LCBsaW5lYXJfb2Zmc2V0Owo+ICAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9y bWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiArCXVuc2lnbmVkIGludCByb3Rh dGlvbiA9IGRybV9yb3RhdGlvbl9jaGFpbih0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlX3JvdGF0 aW9uLAo+ICsJCQkJCQkgICBpbnRlbF9wbGFuZS0+cm90YXRpb24pOwo+ICAKPiAgCXNwcmN0bCA9 IEk5MTVfUkVBRChTUFJDVEwocGlwZSkpOwo+ICAKPiBAQCAtMzA5LDcgKzMxMyw3IEBAIGl2Yl91 cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAgCQkJCQkgICAgICAgcGl4ZWxfc2l6ZSwgZmItPnBpdGNoZXNbMF0pOwo+ICAJbGluZWFy X29mZnNldCAtPSBzcHJzdXJmX29mZnNldDsKPiAgCj4gLQlpZiAoaW50ZWxfcGxhbmUtPnJvdGF0 aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiArCWlmIChyb3RhdGlvbiA9PSBCSVQoRFJN X1JPVEFURV8xODApKSB7Cj4gIAkJc3ByY3RsIHw9IFNQUklURV9ST1RBVEVfMTgwOwo+ICAKPiAg CQkvKiBIU1cgYW5kIEJEVyBkb2VzIHRoaXMgYXV0b21hZ2ljYWxseSBpbiBoYXJkd2FyZSAqLwo+ IEBAIC00MzUsNiArNDM5LDggQEAgaWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJdW5zaWduZWQgbG9uZyBkdnNzdXJmX29m ZnNldCwgbGluZWFyX29mZnNldDsKPiAgCXUzMiBkdnNjbnRyLCBkdnNzY2FsZTsKPiAgCWludCBw aXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4g Kwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBkcm1fcm90YXRpb25fY2hhaW4odG9faW50ZWxfY3J0 YyhjcnRjKS0+cGlwZV9yb3RhdGlvbiwKPiArCQkJCQkJICAgaW50ZWxfcGxhbmUtPnJvdGF0aW9u KTsKPiAgCj4gIAlkdnNjbnRyID0gSTkxNV9SRUFEKERWU0NOVFIocGlwZSkpOwo+ICAKPiBAQCAt NTAwLDcgKzUwNiw3IEBAIGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJCQkgICAgICAgcGl4ZWxfc2l6ZSwgZmItPnBp dGNoZXNbMF0pOwo+ICAJbGluZWFyX29mZnNldCAtPSBkdnNzdXJmX29mZnNldDsKPiAgCj4gLQlp ZiAoaW50ZWxfcGxhbmUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiArCWlm IChyb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKSB7Cj4gIAkJZHZzY250ciB8PSBEVlNf Uk9UQVRFXzE4MDsKPiAgCj4gIAkJeCArPSBzcmNfdzsKPiBAQCAtNzM4LDYgKzc0NCw4IEBAIGlu dGVsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICAJCS5zcmNfdyA9IHNyY193LAo+ICAJCS5zcmNfaCA9IHNyY19oLAo+ICAJfTsK PiArCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IGRybV9yb3RhdGlvbl9jaGFpbihpbnRlbF9jcnRj LT5waXBlX3JvdGF0aW9uLAo+ICsJCQkJCQkgICBpbnRlbF9wbGFuZS0+cm90YXRpb24pOwo+ICAK PiAgCS8qIERvbid0IG1vZGlmeSBhbm90aGVyIHBpcGUncyBwbGFuZSAqLwo+ICAJaWYgKGludGVs X3BsYW5lLT5waXBlICE9IGludGVsX2NydGMtPnBpcGUpIHsKPiBAQCAtNzY5LDggKzc3NywxMSBA QCBpbnRlbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiAgCW1heF9zY2FsZSA9IGludGVsX3BsYW5lLT5tYXhfZG93bnNjYWxlIDw8 IDE2Owo+ICAJbWluX3NjYWxlID0gaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSA/IDEgOiAoMSA8PCAx Nik7Cj4gIAo+ICsJZHJtX3JlY3Rfcm90YXRlKCZkc3QsIGRybV9yZWN0X3dpZHRoKCZjbGlwKSwg ZHJtX3JlY3RfaGVpZ2h0KCZjbGlwKSwKPiArCQkJaW50ZWxfY3J0Yy0+cGlwZV9yb3RhdGlvbik7 Cj4gKwo+ICAJZHJtX3JlY3Rfcm90YXRlKCZzcmMsIGZiLT53aWR0aCA8PCAxNiwgZmItPmhlaWdo dCA8PCAxNiwKPiAtCQkJaW50ZWxfcGxhbmUtPnJvdGF0aW9uKTsKPiArCQkJcm90YXRpb24pOwo+ ICAKPiAgCWhzY2FsZSA9IGRybV9yZWN0X2NhbGNfaHNjYWxlX3JlbGF4ZWQoJnNyYywgJmRzdCwg bWluX3NjYWxlLCBtYXhfc2NhbGUpOwo+ICAJQlVHX09OKGhzY2FsZSA8IDApOwo+IEBAIC04MTEs NyArODIyLDcgQEAgaW50ZWxfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCQkgICAgIGRybV9yZWN0X2hlaWdodCgmZHN0KSAq IHZzY2FsZSAtIGRybV9yZWN0X2hlaWdodCgmc3JjKSk7Cj4gIAo+ICAJCWRybV9yZWN0X3JvdGF0 ZV9pbnYoJnNyYywgZmItPndpZHRoIDw8IDE2LCBmYi0+aGVpZ2h0IDw8IDE2LAo+IC0JCQkJICAg IGludGVsX3BsYW5lLT5yb3RhdGlvbik7Cj4gKwkJCQkgICAgcm90YXRpb24pOwo+ICAKPiAgCQkv KiBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzcmMgdmlld3BvcnQgd2Fzbid0IGVubGFy Z2VkICovCj4gIAkJV0FSTl9PTihzcmMueDEgPCAoaW50KSBzcmNfeCB8fAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==