From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 13/15] drm/i915: Clean up CHV lane soft reset programming Date: Thu, 9 Jul 2015 18:27:55 +0200 Message-ID: <20150709162755.GK21858@phenom.ffwll.local> References: <1436388361-11130-1-git-send-email-ville.syrjala@linux.intel.com> <1436388361-11130-14-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-wi0-f178.google.com (mail-wi0-f178.google.com [209.85.212.178]) by gabe.freedesktop.org (Postfix) with ESMTPS id 73AE66E968 for ; Thu, 9 Jul 2015 09:25:11 -0700 (PDT) Received: by wiwl6 with SMTP id l6so23705205wiw.0 for ; Thu, 09 Jul 2015 09:25:10 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1436388361-11130-14-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: DeepakS@freedesktop.org, deepak.s@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdWwgMDgsIDIwMTUgYXQgMTE6NDU6NTlQTSArMDMwMCwgdmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiAKPiBDdXJyZW50bHkgd2UgcmVsZXNhciB0aGUgbGFuZSBz b2Z0IHJlc2V0IGJlZm9yZSBsYW5lIHN0YWdnZXIgc2V0dGluZ3MKICAgICAgICAgICAgICAgcmVs ZWFzZQoKPiBoYXZlIGJlZW4gcHJvZ3JhbW1lZC4gSSBiZWxpZXZlIHRoYXQgbWVhbnMgd2UgZG9u J3QgYWN0dWFsbHkgZG8gbGFuZQo+IHN0YWdnZXJpbmcuIFNvIG1vdmUgdGhlIHNvZnQgcmVzZXQg ZGVhc3NlcnQgdG8gaGFwcGVuIGFmdGVyIGxhbmUKPiBzdGFnZ2VyaW5nIGhhcyBiZWVuIHByb2dy YW1tZWQuCj4gCj4gVGhlIG9uZSBjb25mdXNpbmcgdGhpbmcgaW4gdGhpcyBpcyB0aGF0IHdoZW4g d2UgcmVtb3ZlIHRoZSBwb3dlciBkb3duCj4gb3ZlcnJpZGUgZnJvbSB0aGUgbGFuZXMsIHRoZXkg cG93ZXIgdXAgd2l0aCBkZWZhdWwgcmVnaXN0ZXIgdmFsdWVzLAo+IHdoaWNoIGRvIG5vdCBoYXZl IHRoZSBzb2Z0IHJlc2V0IG92ZXJyaWRlcyBlbmFibGVkLiBBbmQgYWNjb3JkaW5nIHRvCj4gc29t ZSBkb2NzIGJ5IGRlZmF1bHQgdGhlIGRhdGEgbGFuZSByZXNldHMgYXJlIHRpZWQgdG8gY21ucmVz ZXQuIFNvIHRoYXQKPiB3b3VsZCBtZWFuIHRoYXQgbGFuZXMgd291bGQgY29tZSBvdXQgb2YgcmVz ZXQgd2l0aG91dCBzdGFnZ2VyaW5nIGFzCj4gc29vbiBhcyB0aGUgcG93ZXIgZG93biBvdmVycmlk ZXMgYXJlIHJlbW92ZWQuIEJ1dCBzaW5lIHdlIGNhbid0IGFjY2Vzcwo+IGVpdGhlciB0aGUgbGFu ZSBzdGFnZ2VyIHJlZ2lzdGVyIG5vciB0aGUgc29mdCByZXNldCBvdmVycmlkZSByZWdpc3RlcnMK PiB1bnRpbCB0aGUgbGFuZXMgYXJlIHBvd2VyZWQgb24sIHdlIGNhbiByZWFsbHkgZG8gYW55dGhp bmcgYWJvdXQgaXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4ndD8K Cj4gU28gbGV0J3MganVzdCBzZXQgdGhlIHNvZnQgcmVzZXQgb3ZlcnJpZGVzIGFzIHNvb24gYXMg dGhlIGxhbmUgaXMKPiBwb3dlcmVkIG9uIGFuZCBob3BlIGZvciB0aGUgYmVzdC4KCkZ1biBzdG9y eSBpbiB0aGVzZSBwYXRjaGVzIC4uLgotRGFuaWVsCgo+IAo+IFNpZ25lZC1vZmYtYnk6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICB8IDkxICsrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgfCA5 MSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiAgMiBmaWxlcyBjaGFu Z2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgODIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gaW5kZXggODE3ZGY4Ny4uMjk3YmQxNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+IEBAIC0yMzg5LDQyICsyMzg5LDYyIEBAIHN0YXRpYyB2b2lkIHZsdl9wb3N0X2Rp c2FibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAlpbnRlbF9kcF9saW5r X2Rvd24oaW50ZWxfZHApOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBjaHZfcG9zdF9kaXNhYmxl X2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICtzdGF0aWMgdm9pZCBjaHZfZGF0 YV9sYW5lX3NvZnRfcmVzZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCQkg ICAgIGJvb2wgcmVzZXQpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNf dG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+IC0Jc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqZHBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPQo+IC0JCXRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiAtCWVudW0g ZHBpb19jaGFubmVsIGNoID0gdmx2X2Rwb3J0X3RvX2NoYW5uZWwoZHBvcnQpOwo+IC0JZW51bSBw aXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0JdTMyIHZhbDsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsJ ZW51bSBkcGlvX2NoYW5uZWwgY2ggPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChlbmNfdG9fZGlnX3Bv cnQoJmVuY29kZXItPmJhc2UpKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5w aXBlOwo+ICsJdWludDMyX3QgdmFsOwo+ICAKPiAtCWludGVsX2RwX2xpbmtfZG93bihpbnRlbF9k cCk7Cj4gKwl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcw KGNoKSk7Cj4gKwlpZiAocmVzZXQpCj4gKwkJdmFsICY9IH4oRFBJT19QQ1NfVFhfTEFORTJfUkVT RVQgfCBEUElPX1BDU19UWF9MQU5FMV9SRVNFVCk7Cj4gKwllbHNlCj4gKwkJdmFsIHw9IERQSU9f UENTX1RYX0xBTkUyX1JFU0VUIHwgRFBJT19QQ1NfVFhfTEFORTFfUkVTRVQ7Cj4gKwl2bHZfZHBp b193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMChjaCksIHZhbCk7Cj4gIAo+IC0J bXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJaWYgKGNydGMtPmNvbmZpZy0+bGFu ZV9jb3VudCA+IDIpIHsKPiArCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBW TFZfUENTMjNfRFcwKGNoKSk7Cj4gKwkJaWYgKHJlc2V0KQo+ICsJCQl2YWwgJj0gfihEUElPX1BD U19UWF9MQU5FMl9SRVNFVCB8IERQSU9fUENTX1RYX0xBTkUxX1JFU0VUKTsKPiArCQllbHNlCj4g KwkJCXZhbCB8PSBEUElPX1BDU19UWF9MQU5FMl9SRVNFVCB8IERQSU9fUENTX1RYX0xBTkUxX1JF U0VUOwo+ICsJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcwKGNo KSwgdmFsKTsKPiArCX0KPiAgCj4gLQkvKiBQcm9wYWdhdGUgc29mdCByZXNldCB0byBkYXRhIGxh bmUgcmVzZXQgKi8KPiAgCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9Q Q1MwMV9EVzEoY2gpKTsKPiAgCXZhbCB8PSBDSFZfUENTX1JFUV9TT0ZUUkVTRVRfRU47Cj4gKwlp ZiAocmVzZXQpCj4gKwkJdmFsICY9IH5EUElPX1BDU19DTEtfU09GVF9SRVNFVDsKPiArCWVsc2UK PiArCQl2YWwgfD0gRFBJT19QQ1NfQ0xLX1NPRlRfUkVTRVQ7Cj4gIAl2bHZfZHBpb193cml0ZShk ZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMShjaCksIHZhbCk7Cj4gIAo+IC0JaWYgKGludGVs X2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKPiArCWlmIChjcnRjLT5jb25maWctPmxh bmVfY291bnQgPiAyKSB7Cj4gIAkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwg VkxWX1BDUzIzX0RXMShjaCkpOwo+ICAJCXZhbCB8PSBDSFZfUENTX1JFUV9TT0ZUUkVTRVRfRU47 Cj4gKwkJaWYgKHJlc2V0KQo+ICsJCQl2YWwgJj0gfkRQSU9fUENTX0NMS19TT0ZUX1JFU0VUOwo+ ICsJCWVsc2UKPiArCQkJdmFsIHw9IERQSU9fUENTX0NMS19TT0ZUX1JFU0VUOwo+ICAJCXZsdl9k cGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxKGNoKSwgdmFsKTsKPiAgCX0K PiArfQo+ICAKPiAtCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1Mw MV9EVzAoY2gpKTsKPiAtCXZhbCAmPSB+KERQSU9fUENTX1RYX0xBTkUyX1JFU0VUIHwgRFBJT19Q Q1NfVFhfTEFORTFfUkVTRVQpOwo+IC0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZM Vl9QQ1MwMV9EVzAoY2gpLCB2YWwpOwo+ICtzdGF0aWMgdm9pZCBjaHZfcG9zdF9kaXNhYmxlX2Rw KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiArCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAo+IC0JaWYgKGludGVsX2Ny dGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKPiAtCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRl dl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcwKGNoKSk7Cj4gLQkJdmFsICY9IH4oRFBJT19QQ1Nf VFhfTEFORTJfUkVTRVQgfCBEUElPX1BDU19UWF9MQU5FMV9SRVNFVCk7Cj4gLQkJdmx2X2RwaW9f d3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAoY2gpLCB2YWwpOwo+IC0JfQo+ICsJ aW50ZWxfZHBfbGlua19kb3duKGludGVsX2RwKTsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJp di0+c2JfbG9jayk7Cj4gKwo+ICsJLyogQXNzZXJ0IGRhdGEgbGFuZSByZXNldCAqLwo+ICsJY2h2 X2RhdGFfbGFuZV9zb2Z0X3Jlc2V0KGVuY29kZXIsIHRydWUpOwo+ICAKPiAgCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICB9Cj4gQEAgLTI4MDIsMjcgKzI4MjIsNiBAQCBzdGF0 aWMgdm9pZCBjaHZfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikK PiAgCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMTEoY2gpLCB2 YWwpOwo+ICAJfQo+ICAKPiAtCS8qIERlYXNzZXJ0IHNvZnQgZGF0YSBsYW5lIHJlc2V0Ki8KPiAt CXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEoY2gpKTsK PiAtCXZhbCB8PSBDSFZfUENTX1JFUV9TT0ZUUkVTRVRfRU47Cj4gLQl2bHZfZHBpb193cml0ZShk ZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMShjaCksIHZhbCk7Cj4gLQo+IC0JaWYgKGludGVs X2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKPiAtCQl2YWwgPSB2bHZfZHBpb19yZWFk KGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxKGNoKSk7Cj4gLQkJdmFsIHw9IENIVl9QQ1Nf UkVRX1NPRlRSRVNFVF9FTjsKPiAtCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxW X1BDUzIzX0RXMShjaCksIHZhbCk7Cj4gLQl9Cj4gLQo+IC0JdmFsID0gdmx2X2RwaW9fcmVhZChk ZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMChjaCkpOwo+IC0JdmFsIHw9IChEUElPX1BDU19U WF9MQU5FMl9SRVNFVCB8IERQSU9fUENTX1RYX0xBTkUxX1JFU0VUKTsKPiAtCXZsdl9kcGlvX3dy aXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcwKGNoKSwgdmFsKTsKPiAtCj4gLQlpZiAo aW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID4gMikgewo+IC0JCXZhbCA9IHZsdl9kcGlv X3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAoY2gpKTsKPiAtCQl2YWwgfD0gKERQ SU9fUENTX1RYX0xBTkUyX1JFU0VUIHwgRFBJT19QQ1NfVFhfTEFORTFfUkVTRVQpOwo+IC0JCXZs dl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcwKGNoKSwgdmFsKTsKPiAt CX0KPiAtCj4gIAkvKiBQcm9ncmFtIFR4IGxhbmUgbGF0ZW5jeSBvcHRpbWFsIHNldHRpbmcqLwo+ ICAJZm9yIChpID0gMDsgaSA8IGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudDsgaSsrKSB7 Cj4gIAkJLyogU2V0IHRoZSB1cGFyIGJpdCAqLwo+IEBAIC0yODcyLDYgKzI4NzEsOSBAQCBzdGF0 aWMgdm9pZCBjaHZfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikK PiAgCQkJICAgICAgIERQSU9fVFgyX1NUQUdHRVJfTVVMVCg1KSk7Cj4gIAl9Cj4gIAo+ICsJLyog RGVhc3NlcnQgZGF0YSBsYW5lIHJlc2V0ICovCj4gKwljaHZfZGF0YV9sYW5lX3NvZnRfcmVzZXQo ZW5jb2RlciwgZmFsc2UpOwo+ICsKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2sp Owo+ICAKPiAgCWludGVsX2VuYWJsZV9kcChlbmNvZGVyKTsKPiBAQCAtMjkxMCw2ICsyOTEyLDkg QEAgc3RhdGljIHZvaWQgY2h2X2RwX3ByZV9wbGxfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyKQo+ICAKPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiAgCj4g KwkvKiBBc3NlcnQgZGF0YSBsYW5lIHJlc2V0ICovCj4gKwljaHZfZGF0YV9sYW5lX3NvZnRfcmVz ZXQoZW5jb2RlciwgdHJ1ZSk7Cj4gKwo+ICAJLyogcHJvZ3JhbSBsZWZ0L3JpZ2h0IGNsb2NrIGRp c3RyaWJ1dGlvbiAqLwo+ICAJaWYgKHBpcGUgIT0gUElQRV9CKSB7Cj4gIAkJdmFsID0gdmx2X2Rw aW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgX0NIVl9DTU5fRFc1X0NIMCk7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkbWkuYwo+IGluZGV4IDRiNjA0ZWUuLjE3NmQ2ODEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGRtaS5jCj4gQEAgLTE2MTIsNiArMTYxMiw1MCBAQCBzdGF0aWMgdm9pZCB2bHZf aGRtaV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBj aHZfZGF0YV9sYW5lX3NvZnRfcmVzZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g KwkJCQkgICAgIGJvb2wgcmVzZXQpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsJZW51bSBkcGlvX2NoYW5u ZWwgY2ggPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJh c2UpKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVy LT5iYXNlLmNydGMpOwo+ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICsJdWludDMy X3QgdmFsOwo+ICsKPiArCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9Q Q1MwMV9EVzAoY2gpKTsKPiArCWlmIChyZXNldCkKPiArCQl2YWwgJj0gfihEUElPX1BDU19UWF9M QU5FMl9SRVNFVCB8IERQSU9fUENTX1RYX0xBTkUxX1JFU0VUKTsKPiArCWVsc2UKPiArCQl2YWwg fD0gRFBJT19QQ1NfVFhfTEFORTJfUkVTRVQgfCBEUElPX1BDU19UWF9MQU5FMV9SRVNFVDsKPiAr CXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcwKGNoKSwgdmFsKTsK PiArCj4gKwlpZiAoY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID4gMikgewo+ICsJCXZhbCA9IHZs dl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAoY2gpKTsKPiArCQlpZiAo cmVzZXQpCj4gKwkJCXZhbCAmPSB+KERQSU9fUENTX1RYX0xBTkUyX1JFU0VUIHwgRFBJT19QQ1Nf VFhfTEFORTFfUkVTRVQpOwo+ICsJCWVsc2UKPiArCQkJdmFsIHw9IERQSU9fUENTX1RYX0xBTkUy X1JFU0VUIHwgRFBJT19QQ1NfVFhfTEFORTFfUkVTRVQ7Cj4gKwkJdmx2X2RwaW9fd3JpdGUoZGV2 X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAoY2gpLCB2YWwpOwo+ICsJfQo+ICsKPiArCXZhbCA9 IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEoY2gpKTsKPiArCXZh bCB8PSBDSFZfUENTX1JFUV9TT0ZUUkVTRVRfRU47Cj4gKwlpZiAocmVzZXQpCj4gKwkJdmFsICY9 IH5EUElPX1BDU19DTEtfU09GVF9SRVNFVDsKPiArCWVsc2UKPiArCQl2YWwgfD0gRFBJT19QQ1Nf Q0xLX1NPRlRfUkVTRVQ7Cj4gKwl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzAxX0RXMShjaCksIHZhbCk7Cj4gKwo+ICsJaWYgKGNydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+ IDIpIHsKPiArCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNf RFcxKGNoKSk7Cj4gKwkJdmFsIHw9IENIVl9QQ1NfUkVRX1NPRlRSRVNFVF9FTjsKPiArCQlpZiAo cmVzZXQpCj4gKwkJCXZhbCAmPSB+RFBJT19QQ1NfQ0xLX1NPRlRfUkVTRVQ7Cj4gKwkJZWxzZQo+ ICsJCQl2YWwgfD0gRFBJT19QQ1NfQ0xLX1NPRlRfUkVTRVQ7Cj4gKwkJdmx2X2RwaW9fd3JpdGUo ZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEoY2gpLCB2YWwpOwo+ICsJfQo+ICt9Cj4gKwo+ ICBzdGF0aWMgdm9pZCBjaHZfaGRtaV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikKPiAgewo+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZHBvcnQgPSBl bmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwo+IEBAIC0xNjM3LDYgKzE2ODEsOSBAQCBz dGF0aWMgdm9pZCBjaHZfaGRtaV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gIAo+ICsJ LyogQXNzZXJ0IGRhdGEgbGFuZSByZXNldCAqLwo+ICsJY2h2X2RhdGFfbGFuZV9zb2Z0X3Jlc2V0 KGVuY29kZXIsIHRydWUpOwo+ICsKPiAgCS8qIHByb2dyYW0gbGVmdC9yaWdodCBjbG9jayBkaXN0 cmlidXRpb24gKi8KPiAgCWlmIChwaXBlICE9IFBJUEVfQikgewo+ICAJCXZhbCA9IHZsdl9kcGlv X3JlYWQoZGV2X3ByaXYsIHBpcGUsIF9DSFZfQ01OX0RXNV9DSDApOwo+IEBAIC0xNzM5LDMzICsx Nzg2LDEzIEBAIHN0YXRpYyB2b2lkIHZsdl9oZG1pX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlcikKPiAgCj4gIHN0YXRpYyB2b2lkIGNodl9oZG1pX3Bvc3RfZGlzYWJs ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgewo+IC0Jc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqZHBvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwo+ICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjID0KPiAtCQl0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2Uu Y3J0Yyk7Cj4gLQllbnVtIGRwaW9fY2hhbm5lbCBjaCA9IHZsdl9kcG9ydF90b19jaGFubmVsKGRw b3J0KTsKPiAtCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAtCXUzMiB2YWw7 Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICAKPiAtCS8qIFByb3Bh Z2F0ZSBzb2Z0IHJlc2V0IHRvIGRhdGEgbGFuZSByZXNldCAqLwo+IC0JdmFsID0gdmx2X2RwaW9f cmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMShjaCkpOwo+IC0JdmFsIHw9IENIVl9Q Q1NfUkVRX1NPRlRSRVNFVF9FTjsKPiAtCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBW TFZfUENTMDFfRFcxKGNoKSwgdmFsKTsKPiAtCj4gLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9w cml2LCBwaXBlLCBWTFZfUENTMjNfRFcxKGNoKSk7Cj4gLQl2YWwgfD0gQ0hWX1BDU19SRVFfU09G VFJFU0VUX0VOOwo+IC0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19E VzEoY2gpLCB2YWwpOwo+IC0KPiAtCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUs IFZMVl9QQ1MwMV9EVzAoY2gpKTsKPiAtCXZhbCAmPSB+KERQSU9fUENTX1RYX0xBTkUyX1JFU0VU IHwgRFBJT19QQ1NfVFhfTEFORTFfUkVTRVQpOwo+IC0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYs IHBpcGUsIFZMVl9QQ1MwMV9EVzAoY2gpLCB2YWwpOwo+IC0KPiAtCXZhbCA9IHZsdl9kcGlvX3Jl YWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAoY2gpKTsKPiAtCXZhbCAmPSB+KERQSU9f UENTX1RYX0xBTkUyX1JFU0VUIHwgRFBJT19QQ1NfVFhfTEFORTFfUkVTRVQpOwo+IC0Jdmx2X2Rw aW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAoY2gpLCB2YWwpOwo+ICsJLyog QXNzZXJ0IGRhdGEgbGFuZSByZXNldCAqLwo+ICsJY2h2X2RhdGFfbGFuZV9zb2Z0X3Jlc2V0KGVu Y29kZXIsIHRydWUpOwo+ICAKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ ICB9Cj4gQEAgLTE3OTYsMjMgKzE4MjMsNiBAQCBzdGF0aWMgdm9pZCBjaHZfaGRtaV9wcmVfZW5h YmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJdmFsICY9IH5EUElPX0xBTkVE RVNLRVdfU1RSQVBfT1ZSRDsKPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZf UENTMjNfRFcxMShjaCksIHZhbCk7Cj4gIAo+IC0JLyogRGVhc3NlcnQgc29mdCBkYXRhIGxhbmUg cmVzZXQqLwo+IC0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAx X0RXMShjaCkpOwo+IC0JdmFsIHw9IENIVl9QQ1NfUkVRX1NPRlRSRVNFVF9FTjsKPiAtCXZsdl9k cGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxKGNoKSwgdmFsKTsKPiAtCj4g LQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxKGNoKSk7 Cj4gLQl2YWwgfD0gQ0hWX1BDU19SRVFfU09GVFJFU0VUX0VOOwo+IC0Jdmx2X2RwaW9fd3JpdGUo ZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEoY2gpLCB2YWwpOwo+IC0KPiAtCXZhbCA9IHZs dl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzAoY2gpKTsKPiAtCXZhbCB8 PSAoRFBJT19QQ1NfVFhfTEFORTJfUkVTRVQgfCBEUElPX1BDU19UWF9MQU5FMV9SRVNFVCk7Cj4g LQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMChjaCksIHZhbCk7 Cj4gLQo+IC0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RX MChjaCkpOwo+IC0JdmFsIHw9IChEUElPX1BDU19UWF9MQU5FMl9SRVNFVCB8IERQSU9fUENTX1RY X0xBTkUxX1JFU0VUKTsKPiAtCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENT MjNfRFcwKGNoKSwgdmFsKTsKPiAtCj4gIAkvKiBQcm9ncmFtIFR4IGxhdGVuY3kgb3B0aW1hbCBz ZXR0aW5nICovCj4gIAlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gIAkJLyogU2V0IHRoZSB1 cGFyIGJpdCAqLwo+IEBAIC0xODU1LDYgKzE4NjUsOSBAQCBzdGF0aWMgdm9pZCBjaHZfaGRtaV9w cmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJCSAgICAgICBEUElP X1RYMV9TVEFHR0VSX01VTFQoNykgfAo+ICAJCSAgICAgICBEUElPX1RYMl9TVEFHR0VSX01VTFQo NSkpOwo+ICAKPiArCS8qIERlYXNzZXJ0IGRhdGEgbGFuZSByZXNldCAqLwo+ICsJY2h2X2RhdGFf bGFuZV9zb2Z0X3Jlc2V0KGVuY29kZXIsIGZhbHNlKTsKPiArCj4gIAkvKiBDbGVhciBjYWxjIGlu aXQgKi8KPiAgCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9E VzEwKGNoKSk7Cj4gIAl2YWwgJj0gfihEUElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBEUElP X1BDU19TV0lOR19DQUxDX1RYMV9UWDMpOwo+IC0tIAo+IDIuMy42Cj4gCj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBs aXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVy ClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=