From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jim Bride Subject: Re: [PATCH v2 04/10] drm/i915: Unduplicate CHV phy-releated pre pll enabling code Date: Wed, 20 Apr 2016 12:45:35 -0700 Message-ID: <20160420194535.GE13777@shiv> References: <1460569673-13694-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1460569673-13694-5-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id DBBFB6EAFD for ; Wed, 20 Apr 2016 19:45:35 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1460569673-13694-5-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan de Oliveira Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBcHIgMTMsIDIwMTYgYXQgMDg6NDc6NDdQTSArMDMwMCwgQW5kZXIgQ29uc2VsdmFu IGRlIE9saXZlaXJhIHdyb3RlOgo+IFRoZSBzYW1lIGxvZ2ljIGlzIHVzZWQgZm9yIERQIGFuZCBI RE1JIHNvIG1vdmUgaXQgdG8gaW50ZWxfZHBpb19waHkuYy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBB bmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBp bnRlbC5jb20+CgpSZXZpZXdlZC1ieTogSmltIEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50ZWwu Y29tPgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICB8ICAx ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICB8IDgzICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwaW9fcGh5LmMgfCA4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgfCAgNSArKysKPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICB8IDc0ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiAgNSBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCspLCAxNTUgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZmU0MDc2MS4uMTliZmUw NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0zNTYwLDYgKzM1NjAsNyBAQCB2 b2lkIGNodl9zZXRfcGh5X3NpZ25hbF9sZXZlbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgCQkJICAgICAgYm9vbCB1bmlxX3RyYW5zX3NjYWxlKTsKPiAgdm9pZCBjaHZfZGF0YV9s YW5lX3NvZnRfcmVzZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCSAgICAg IGJvb2wgcmVzZXQpOwo+ICt2b2lkIGNodl9waHlfcHJlX3BsbF9lbmFibGUoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpOwo+ICAKPiAgaW50IGludGVsX2dwdV9mcmVxKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZhbCk7Cj4gIGludCBpbnRlbF9mcmVxX29wY29k ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2YWwpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYwo+IGluZGV4IDRkNjMwNzEuLmRkNjJiZjAgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMKPiBAQCAtMTMxLDExICsxMzEsNiBAQCBzdGF0aWMgdm9pZCB2bHZfc3RlYWxf cG93ZXJfc2VxdWVuY2VyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkgICAgICBlbnVt IHBpcGUgcGlwZSk7Cj4gIHN0YXRpYyB2b2lkIGludGVsX2RwX3Vuc2V0X2VkaWQoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCk7Cj4gIAo+IC1zdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2RwX3Vu dXNlZF9sYW5lX21hc2soaW50IGxhbmVfY291bnQpCj4gLXsKPiAtCXJldHVybiB+KCgxIDw8IGxh bmVfY291bnQpIC0gMSkgJiAweGY7Cj4gLX0KPiAtCj4gIHN0YXRpYyBpbnQKPiAgaW50ZWxfZHBf bWF4X2xpbmtfYncoc3RydWN0IGludGVsX2RwICAqaW50ZWxfZHApCj4gIHsKPiBAQCAtMjk0NSw4 NSArMjk0MCw5IEBAIHN0YXRpYyB2b2lkIGNodl9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyKQo+ICAKPiAgc3RhdGljIHZvaWQgY2h2X2RwX3ByZV9wbGxfZW5hYmxl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkcG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7Cj4gLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMgPQo+IC0JCXRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5j cnRjKTsKPiAtCWVudW0gZHBpb19jaGFubmVsIGNoID0gdmx2X2Rwb3J0X3RvX2NoYW5uZWwoZHBv cnQpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0JdW5zaWduZWQg aW50IGxhbmVfbWFzayA9Cj4gLQkJaW50ZWxfZHBfdW51c2VkX2xhbmVfbWFzayhpbnRlbF9jcnRj LT5jb25maWctPmxhbmVfY291bnQpOwo+IC0JdTMyIHZhbDsKPiAtCj4gIAlpbnRlbF9kcF9wcmVw YXJlKGVuY29kZXIpOwo+ICAKPiAtCS8qCj4gLQkgKiBNdXN0IHRyaWNrIHRoZSBzZWNvbmQgY29t bW9uIGxhbmUgaW50byBsaWZlLgo+IC0JICogT3RoZXJ3aXNlIHdlIGNhbid0IGV2ZW4gYWNjZXNz IHRoZSBQTEwuCj4gLQkgKi8KPiAtCWlmIChjaCA9PSBEUElPX0NIMCAmJiBwaXBlID09IFBJUEVf QikKPiAtCQlkcG9ydC0+cmVsZWFzZV9jbDJfb3ZlcnJpZGUgPQo+IC0JCQkhY2h2X3BoeV9wb3dl cmdhdGVfY2goZGV2X3ByaXYsIERQSU9fUEhZMCwgRFBJT19DSDEsIHRydWUpOwo+IC0KPiAtCWNo dl9waHlfcG93ZXJnYXRlX2xhbmVzKGVuY29kZXIsIHRydWUsIGxhbmVfbWFzayk7Cj4gLQo+IC0J bXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+IC0KPiAtCS8qIEFzc2VydCBkYXRhIGxh bmUgcmVzZXQgKi8KPiAtCWNodl9kYXRhX2xhbmVfc29mdF9yZXNldChlbmNvZGVyLCB0cnVlKTsK PiAtCj4gLQkvKiBwcm9ncmFtIGxlZnQvcmlnaHQgY2xvY2sgZGlzdHJpYnV0aW9uICovCj4gLQlp ZiAocGlwZSAhPSBQSVBFX0IpIHsKPiAtCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBw aXBlLCBfQ0hWX0NNTl9EVzVfQ0gwKTsKPiAtCQl2YWwgJj0gfihDSFZfQlVGTEVGVEVOQTFfTUFT SyB8IENIVl9CVUZSSUdIVEVOQTFfTUFTSyk7Cj4gLQkJaWYgKGNoID09IERQSU9fQ0gwKQo+IC0J CQl2YWwgfD0gQ0hWX0JVRkxFRlRFTkExX0ZPUkNFOwo+IC0JCWlmIChjaCA9PSBEUElPX0NIMSkK PiAtCQkJdmFsIHw9IENIVl9CVUZSSUdIVEVOQTFfRk9SQ0U7Cj4gLQkJdmx2X2RwaW9fd3JpdGUo ZGV2X3ByaXYsIHBpcGUsIF9DSFZfQ01OX0RXNV9DSDAsIHZhbCk7Cj4gLQl9IGVsc2Ugewo+IC0J CXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIF9DSFZfQ01OX0RXMV9DSDEpOwo+ IC0JCXZhbCAmPSB+KENIVl9CVUZMRUZURU5BMl9NQVNLIHwgQ0hWX0JVRlJJR0hURU5BMl9NQVNL KTsKPiAtCQlpZiAoY2ggPT0gRFBJT19DSDApCj4gLQkJCXZhbCB8PSBDSFZfQlVGTEVGVEVOQTJf Rk9SQ0U7Cj4gLQkJaWYgKGNoID09IERQSU9fQ0gxKQo+IC0JCQl2YWwgfD0gQ0hWX0JVRlJJR0hU RU5BMl9GT1JDRTsKPiAtCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgX0NIVl9DTU5f RFcxX0NIMSwgdmFsKTsKPiAtCX0KPiAtCj4gLQkvKiBwcm9ncmFtIGNsb2NrIGNoYW5uZWwgdXNh Z2UgKi8KPiAtCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9E VzgoY2gpKTsKPiAtCXZhbCB8PSBDSFZfUENTX1VTRURDTEtDSEFOTkVMX09WUlJJREU7Cj4gLQlp ZiAocGlwZSAhPSBQSVBFX0IpCj4gLQkJdmFsICY9IH5DSFZfUENTX1VTRURDTEtDSEFOTkVMOwo+ IC0JZWxzZQo+IC0JCXZhbCB8PSBDSFZfUENTX1VTRURDTEtDSEFOTkVMOwo+IC0Jdmx2X2RwaW9f d3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzgoY2gpLCB2YWwpOwo+IC0KPiAtCWlm IChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQgPiAyKSB7Cj4gLQkJdmFsID0gdmx2X2Rw aW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXOChjaCkpOwo+IC0JCXZhbCB8PSBD SFZfUENTX1VTRURDTEtDSEFOTkVMX09WUlJJREU7Cj4gLQkJaWYgKHBpcGUgIT0gUElQRV9CKQo+ IC0JCQl2YWwgJj0gfkNIVl9QQ1NfVVNFRENMS0NIQU5ORUw7Cj4gLQkJZWxzZQo+IC0JCQl2YWwg fD0gQ0hWX1BDU19VU0VEQ0xLQ0hBTk5FTDsKPiAtCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwg cGlwZSwgVkxWX1BDUzIzX0RXOChjaCksIHZhbCk7Cj4gLQl9Cj4gLQo+IC0JLyoKPiAtCSAqIFRo aXMgYSBhIGJpdCB3ZWlyZCBzaW5jZSBnZW5lcmFsbHkgQ0wKPiAtCSAqIG1hdGNoZXMgdGhlIHBp cGUsIGJ1dCBoZXJlIHdlIG5lZWQgdG8KPiAtCSAqIHBpY2sgdGhlIENMIGJhc2VkIG9uIHRoZSBw b3J0Lgo+IC0JICovCj4gLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBDSFZf Q01OX0RXMTkoY2gpKTsKPiAtCWlmIChwaXBlICE9IFBJUEVfQikKPiAtCQl2YWwgJj0gfkNIVl9D TU5fVVNFRENMS0NIQU5ORUw7Cj4gLQllbHNlCj4gLQkJdmFsIHw9IENIVl9DTU5fVVNFRENMS0NI QU5ORUw7Cj4gLQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX0NNTl9EVzE5KGNo KSwgdmFsKTsKPiAtCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCWNo dl9waHlfcHJlX3BsbF9lbmFibGUoZW5jb2Rlcik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGNo dl9kcF9wb3N0X3BsbF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHkuYwo+IGluZGV4IDk4NTRjOTMuLmI0Y2EzZmYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMKPiBAQCAtMTYzLDMgKzE2 Myw4NCBAQCB2b2lkIGNodl9kYXRhX2xhbmVfc29mdF9yZXNldChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiAgCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIz X0RXMShjaCksIHZhbCk7Cj4gIAl9Cj4gIH0KPiArCj4gK3ZvaWQgY2h2X3BoeV9wcmVfcGxsX2Vu YWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiArewo+ICsJc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqZHBvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwo+ ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2Owo+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0KPiArCQl0b19pbnRlbF9jcnRjKGVuY29kZXItPmJh c2UuY3J0Yyk7Cj4gKwllbnVtIGRwaW9fY2hhbm5lbCBjaCA9IHZsdl9kcG9ydF90b19jaGFubmVs KGRwb3J0KTsKPiArCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCXVuc2ln bmVkIGludCBsYW5lX21hc2sgPQo+ICsJCWludGVsX2RwX3VudXNlZF9sYW5lX21hc2soaW50ZWxf Y3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50KTsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJLyoKPiArCSAq IE11c3QgdHJpY2sgdGhlIHNlY29uZCBjb21tb24gbGFuZSBpbnRvIGxpZmUuCj4gKwkgKiBPdGhl cndpc2Ugd2UgY2FuJ3QgZXZlbiBhY2Nlc3MgdGhlIFBMTC4KPiArCSAqLwo+ICsJaWYgKGNoID09 IERQSU9fQ0gwICYmIHBpcGUgPT0gUElQRV9CKQo+ICsJCWRwb3J0LT5yZWxlYXNlX2NsMl9vdmVy cmlkZSA9Cj4gKwkJCSFjaHZfcGh5X3Bvd2VyZ2F0ZV9jaChkZXZfcHJpdiwgRFBJT19QSFkwLCBE UElPX0NIMSwgdHJ1ZSk7Cj4gKwo+ICsJY2h2X3BoeV9wb3dlcmdhdGVfbGFuZXMoZW5jb2Rlciwg dHJ1ZSwgbGFuZV9tYXNrKTsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7 Cj4gKwo+ICsJLyogQXNzZXJ0IGRhdGEgbGFuZSByZXNldCAqLwo+ICsJY2h2X2RhdGFfbGFuZV9z b2Z0X3Jlc2V0KGVuY29kZXIsIHRydWUpOwo+ICsKPiArCS8qIHByb2dyYW0gbGVmdC9yaWdodCBj bG9jayBkaXN0cmlidXRpb24gKi8KPiArCWlmIChwaXBlICE9IFBJUEVfQikgewo+ICsJCXZhbCA9 IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIF9DSFZfQ01OX0RXNV9DSDApOwo+ICsJCXZh bCAmPSB+KENIVl9CVUZMRUZURU5BMV9NQVNLIHwgQ0hWX0JVRlJJR0hURU5BMV9NQVNLKTsKPiAr CQlpZiAoY2ggPT0gRFBJT19DSDApCj4gKwkJCXZhbCB8PSBDSFZfQlVGTEVGVEVOQTFfRk9SQ0U7 Cj4gKwkJaWYgKGNoID09IERQSU9fQ0gxKQo+ICsJCQl2YWwgfD0gQ0hWX0JVRlJJR0hURU5BMV9G T1JDRTsKPiArCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgX0NIVl9DTU5fRFc1X0NI MCwgdmFsKTsKPiArCX0gZWxzZSB7Cj4gKwkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwg cGlwZSwgX0NIVl9DTU5fRFcxX0NIMSk7Cj4gKwkJdmFsICY9IH4oQ0hWX0JVRkxFRlRFTkEyX01B U0sgfCBDSFZfQlVGUklHSFRFTkEyX01BU0spOwo+ICsJCWlmIChjaCA9PSBEUElPX0NIMCkKPiAr CQkJdmFsIHw9IENIVl9CVUZMRUZURU5BMl9GT1JDRTsKPiArCQlpZiAoY2ggPT0gRFBJT19DSDEp Cj4gKwkJCXZhbCB8PSBDSFZfQlVGUklHSFRFTkEyX0ZPUkNFOwo+ICsJCXZsdl9kcGlvX3dyaXRl KGRldl9wcml2LCBwaXBlLCBfQ0hWX0NNTl9EVzFfQ0gxLCB2YWwpOwo+ICsJfQo+ICsKPiArCS8q IHByb2dyYW0gY2xvY2sgY2hhbm5lbCB1c2FnZSAqLwo+ICsJdmFsID0gdmx2X2RwaW9fcmVhZChk ZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXOChjaCkpOwo+ICsJdmFsIHw9IENIVl9QQ1NfVVNF RENMS0NIQU5ORUxfT1ZSUklERTsKPiArCWlmIChwaXBlICE9IFBJUEVfQikKPiArCQl2YWwgJj0g fkNIVl9QQ1NfVVNFRENMS0NIQU5ORUw7Cj4gKwllbHNlCj4gKwkJdmFsIHw9IENIVl9QQ1NfVVNF RENMS0NIQU5ORUw7Cj4gKwl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAx X0RXOChjaCksIHZhbCk7Cj4gKwo+ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3Vu dCA+IDIpIHsKPiArCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENT MjNfRFc4KGNoKSk7Cj4gKwkJdmFsIHw9IENIVl9QQ1NfVVNFRENMS0NIQU5ORUxfT1ZSUklERTsK PiArCQlpZiAocGlwZSAhPSBQSVBFX0IpCj4gKwkJCXZhbCAmPSB+Q0hWX1BDU19VU0VEQ0xLQ0hB Tk5FTDsKPiArCQllbHNlCj4gKwkJCXZhbCB8PSBDSFZfUENTX1VTRURDTEtDSEFOTkVMOwo+ICsJ CXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFc4KGNoKSwgdmFsKTsK PiArCX0KPiArCj4gKwkvKgo+ICsJICogVGhpcyBhIGEgYml0IHdlaXJkIHNpbmNlIGdlbmVyYWxs eSBDTAo+ICsJICogbWF0Y2hlcyB0aGUgcGlwZSwgYnV0IGhlcmUgd2UgbmVlZCB0bwo+ICsJICog cGljayB0aGUgQ0wgYmFzZWQgb24gdGhlIHBvcnQuCj4gKwkgKi8KPiArCXZhbCA9IHZsdl9kcGlv X3JlYWQoZGV2X3ByaXYsIHBpcGUsIENIVl9DTU5fRFcxOShjaCkpOwo+ICsJaWYgKHBpcGUgIT0g UElQRV9CKQo+ICsJCXZhbCAmPSB+Q0hWX0NNTl9VU0VEQ0xLQ0hBTk5FTDsKPiArCWVsc2UKPiAr CQl2YWwgfD0gQ0hWX0NNTl9VU0VEQ0xLQ0hBTk5FTDsKPiArCXZsdl9kcGlvX3dyaXRlKGRldl9w cml2LCBwaXBlLCBDSFZfQ01OX0RXMTkoY2gpLCB2YWwpOwo+ICsKPiArCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPnNiX2xvY2spOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRl eCBlMGZjZmExLi5hZDExMzEzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAt MTMyMyw2ICsxMzIzLDExIEBAIGJvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gIGJvb2wKPiAgaW50ZWxfZHBfZ2V0X2xpbmtfc3Rh dHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElO S19TVEFUVVNfU0laRV0pOwo+ICAKPiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaW50ZWxf ZHBfdW51c2VkX2xhbmVfbWFzayhpbnQgbGFuZV9jb3VudCkKPiArewo+ICsJcmV0dXJuIH4oKDEg PDwgbGFuZV9jb3VudCkgLSAxKSAmIDB4ZjsKPiArfQo+ICsKPiAgLyogaW50ZWxfZHBfbXN0LmMg Ki8KPiAgaW50IGludGVsX2RwX21zdF9lbmNvZGVyX2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQsIGludCBjb25uX2lkKTsKPiAgdm9pZCBpbnRlbF9kcF9tc3Rf ZW5jb2Rlcl9jbGVhbnVwKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gaW5kZXggZDFjMGJlNS4uZTgyZDZlOCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiBAQCAtMTY2MCw4MSArMTY2MCw5IEBA IHN0YXRpYyB2b2lkIHZsdl9oZG1pX3ByZV9wbGxfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyKQo+ICAKPiAgc3RhdGljIHZvaWQgY2h2X2hkbWlfcHJlX3BsbF9lbmFibGUoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmRwb3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKTsKPiAtCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9Cj4gLQkJdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMp Owo+IC0JZW51bSBkcGlvX2NoYW5uZWwgY2ggPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChkcG9ydCk7 Cj4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gLQl1MzIgdmFsOwo+IC0K PiAgCWludGVsX2hkbWlfcHJlcGFyZShlbmNvZGVyKTsKPiAgCj4gLQkvKgo+IC0JICogTXVzdCB0 cmljayB0aGUgc2Vjb25kIGNvbW1vbiBsYW5lIGludG8gbGlmZS4KPiAtCSAqIE90aGVyd2lzZSB3 ZSBjYW4ndCBldmVuIGFjY2VzcyB0aGUgUExMLgo+IC0JICovCj4gLQlpZiAoY2ggPT0gRFBJT19D SDAgJiYgcGlwZSA9PSBQSVBFX0IpCj4gLQkJZHBvcnQtPnJlbGVhc2VfY2wyX292ZXJyaWRlID0K PiAtCQkJIWNodl9waHlfcG93ZXJnYXRlX2NoKGRldl9wcml2LCBEUElPX1BIWTAsIERQSU9fQ0gx LCB0cnVlKTsKPiAtCj4gLQljaHZfcGh5X3Bvd2VyZ2F0ZV9sYW5lcyhlbmNvZGVyLCB0cnVlLCAw eDApOwo+IC0KPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiAtCj4gLQkvKiBB c3NlcnQgZGF0YSBsYW5lIHJlc2V0ICovCj4gLQljaHZfZGF0YV9sYW5lX3NvZnRfcmVzZXQoZW5j b2RlciwgdHJ1ZSk7Cj4gLQo+IC0JLyogcHJvZ3JhbSBsZWZ0L3JpZ2h0IGNsb2NrIGRpc3RyaWJ1 dGlvbiAqLwo+IC0JaWYgKHBpcGUgIT0gUElQRV9CKSB7Cj4gLQkJdmFsID0gdmx2X2RwaW9fcmVh ZChkZXZfcHJpdiwgcGlwZSwgX0NIVl9DTU5fRFc1X0NIMCk7Cj4gLQkJdmFsICY9IH4oQ0hWX0JV RkxFRlRFTkExX01BU0sgfCBDSFZfQlVGUklHSFRFTkExX01BU0spOwo+IC0JCWlmIChjaCA9PSBE UElPX0NIMCkKPiAtCQkJdmFsIHw9IENIVl9CVUZMRUZURU5BMV9GT1JDRTsKPiAtCQlpZiAoY2gg PT0gRFBJT19DSDEpCj4gLQkJCXZhbCB8PSBDSFZfQlVGUklHSFRFTkExX0ZPUkNFOwo+IC0JCXZs dl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBfQ0hWX0NNTl9EVzVfQ0gwLCB2YWwpOwo+IC0J fSBlbHNlIHsKPiAtCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBfQ0hWX0NN Tl9EVzFfQ0gxKTsKPiAtCQl2YWwgJj0gfihDSFZfQlVGTEVGVEVOQTJfTUFTSyB8IENIVl9CVUZS SUdIVEVOQTJfTUFTSyk7Cj4gLQkJaWYgKGNoID09IERQSU9fQ0gwKQo+IC0JCQl2YWwgfD0gQ0hW X0JVRkxFRlRFTkEyX0ZPUkNFOwo+IC0JCWlmIChjaCA9PSBEUElPX0NIMSkKPiAtCQkJdmFsIHw9 IENIVl9CVUZSSUdIVEVOQTJfRk9SQ0U7Cj4gLQkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBp cGUsIF9DSFZfQ01OX0RXMV9DSDEsIHZhbCk7Cj4gLQl9Cj4gLQo+IC0JLyogcHJvZ3JhbSBjbG9j ayBjaGFubmVsIHVzYWdlICovCj4gLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBl LCBWTFZfUENTMDFfRFc4KGNoKSk7Cj4gLQl2YWwgfD0gQ0hWX1BDU19VU0VEQ0xLQ0hBTk5FTF9P VlJSSURFOwo+IC0JaWYgKHBpcGUgIT0gUElQRV9CKQo+IC0JCXZhbCAmPSB+Q0hWX1BDU19VU0VE Q0xLQ0hBTk5FTDsKPiAtCWVsc2UKPiAtCQl2YWwgfD0gQ0hWX1BDU19VU0VEQ0xLQ0hBTk5FTDsK PiAtCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFc4KGNoKSwgdmFs KTsKPiAtCj4gLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNf RFc4KGNoKSk7Cj4gLQl2YWwgfD0gQ0hWX1BDU19VU0VEQ0xLQ0hBTk5FTF9PVlJSSURFOwo+IC0J aWYgKHBpcGUgIT0gUElQRV9CKQo+IC0JCXZhbCAmPSB+Q0hWX1BDU19VU0VEQ0xLQ0hBTk5FTDsK PiAtCWVsc2UKPiAtCQl2YWwgfD0gQ0hWX1BDU19VU0VEQ0xLQ0hBTk5FTDsKPiAtCXZsdl9kcGlv X3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFc4KGNoKSwgdmFsKTsKPiAtCj4gLQkv Kgo+IC0JICogVGhpcyBhIGEgYml0IHdlaXJkIHNpbmNlIGdlbmVyYWxseSBDTAo+IC0JICogbWF0 Y2hlcyB0aGUgcGlwZSwgYnV0IGhlcmUgd2UgbmVlZCB0bwo+IC0JICogcGljayB0aGUgQ0wgYmFz ZWQgb24gdGhlIHBvcnQuCj4gLQkgKi8KPiAtCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYs IHBpcGUsIENIVl9DTU5fRFcxOShjaCkpOwo+IC0JaWYgKHBpcGUgIT0gUElQRV9CKQo+IC0JCXZh bCAmPSB+Q0hWX0NNTl9VU0VEQ0xLQ0hBTk5FTDsKPiAtCWVsc2UKPiAtCQl2YWwgfD0gQ0hWX0NN Tl9VU0VEQ0xLQ0hBTk5FTDsKPiAtCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZf Q01OX0RXMTkoY2gpLCB2YWwpOwo+IC0KPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xv Y2spOwo+ICsJY2h2X3BoeV9wcmVfcGxsX2VuYWJsZShlbmNvZGVyKTsKPiAgfQo+ICAKPiAgc3Rh dGljIHZvaWQgY2h2X2hkbWlfcG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPiAtLSAKPiAyLjQuMTEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==