From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 4.1/5] drm/i915: calculate the port clock rate along with other PLL params Date: Wed, 24 Jun 2015 15:53:23 +0300 Message-ID: <20150624125323.GY5176@intel.com> References: <1434637557-4856-4-git-send-email-imre.deak@intel.com> <1435005352-27604-2-git-send-email-imre.deak@intel.com> 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 7776D6E670 for ; Wed, 24 Jun 2015 05:53:35 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1435005352-27604-2-git-send-email-imre.deak@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdW4gMjIsIDIwMTUgYXQgMTE6MzU6NTFQTSArMDMwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IERlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0gdGhlIHBvcnQgY2xvY2sgZmVkIHRvIHRoZSBw aXBlIGNhbiBiZSB0aGUgUExMJ3MKPiBwb3N0LWRpdmlkZWQgZmFzdCBjbG9jayByYXRlIG9yIGEg LzUgZGl2aWRlZCB2ZXJzaW9uIG9mIGl0LiBUbyBtYWtlIHRoaXMKPiBtb3JlIG9idmlvdXMgYWNy b3NzIHRoZSBwbGF0Zm9ybXMgY2FsY3VsYXRlIHRoaXMgcG9ydCBjbG9jayBhbG9uZyB3aXRoCj4g dGhlIHJlc3Qgb2YgdGhlIFBMTCBwYXJhbWV0ZXJzLgo+IAo+IFRoaXMgaXMgYWxzbyBuZWVkZWQg YnkgdGhlIG5leHQgcGF0Y2ggd2hlcmUgd2UgY2FuIHJldXNlIHRoZSBDSFYgaGVscGVyCj4gZm9y IHRoZSBCWFQgUExMIEhXIHJlYWRvdXQgY29kZTsgc28gZXhwb3J0IHRoZSBjb3JyZXNwb25kaW5n IGhlbHBlci4KPiAKPiBXaGlsZSBhdCBpdCBhbHNvIGFkZCBhIG1vcmUgZGVzY3JpcHRpdmUgbmFt ZSB0byB0aGUgaGVscGVycyBhbmQgYQo+IGNvbW1lbnQgZXhwbGFpbmluZyB3aGF0J3MgYmVpbmcg Y2FsY3VsYXRlZC4KPiAKPiBObyBmdW5jdGlvbmFsIGNoYW5nZS4KPiAKPiBTdWdnZXN0ZWQtYnk6 IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gU2lnbmVk LW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgoKSSdtIG5vdCBzdXJlIEkg ZW50aXJlbHkgbGlrZSB0aGUgbmV3IG5hbWUsIGJ1dCB0aGUgb2xkIG5hbWUgd2Fzbid0Cmdvb2Qg ZWl0aGVyLCBhbmQgSSBjYW4ndCB0aGluayBvZiBhbnl0aGluZyBiZXR0ZXIuCgpSZXZpZXdlZC1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDYxICsrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgICAgfCAgMiArKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDI1 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRl eCBmYjdmZDVmLi5hMTFjZTdmYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiBAQCAtNTUzLDE1ICs1NTMsMjUgQEAgaW50ZWxfbGltaXQoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsIGludCByZWZjbGspCj4gIAlyZXR1cm4gbGltaXQ7Cj4gIH0KPiAg Cj4gKy8qCj4gKyAqIFBsYXRmb3JtIHNwZWNpZmljIGhlbHBlcnMgdG8gY2FsY3VsYXRlIHRoZSBw b3J0IFBMTCBsb29wYmFjay0gKGNsb2NrLm0pLAo+ICsgKiBhbmQgcG9zdC1kaXZpZGVyIChjbG9j ay5wKSB2YWx1ZXMsIHByZS0gKGNsb2NrLnZjbykgYW5kIHBvc3QtZGl2aWRlZCBmYXN0Cj4gKyAq IChjbG9jay5kb3QpIGNsb2NrIHJhdGVzLiBUaGlzIGZhc3QgZG90IGNsb2NrIGlzIGZlZCB0byB0 aGUgcG9ydCdzIElPIGxvZ2ljLgo+ICsgKiBUaGUgaGVscGVycycgcmV0dXJuIHZhbHVlIGlzIHRo ZSByYXRlIG9mIHRoZSBjbG9jayB0aGF0IGlzIGZlZCB0byB0aGUKPiArICogZGlzcGxheSBlbmdp bmUncyBwaXBlIHdoaWNoIGNhbiBiZSB0aGUgYWJvdmUgZmFzdCBkb3QgY2xvY2sgcmF0ZSBvciBh Cj4gKyAqIGRpdmlkZWQtZG93biB2ZXJzaW9uIG9mIGl0Lgo+ICsgKi8KPiAgLyogbTEgaXMgcmVz ZXJ2ZWQgYXMgMCBpbiBQaW5ldmlldywgbiBpcyBhIHJpbmcgY291bnRlciAqLwo+IC1zdGF0aWMg dm9pZCBwaW5ldmlld19jbG9jayhpbnQgcmVmY2xrLCBpbnRlbF9jbG9ja190ICpjbG9jaykKPiAr c3RhdGljIGludCBwbnZfY2FsY19kcGxsX3BhcmFtcyhpbnQgcmVmY2xrLCBpbnRlbF9jbG9ja190 ICpjbG9jaykKPiAgewo+ICAJY2xvY2stPm0gPSBjbG9jay0+bTIgKyAyOwo+ICAJY2xvY2stPnAg PSBjbG9jay0+cDEgKiBjbG9jay0+cDI7Cj4gIAlpZiAoV0FSTl9PTihjbG9jay0+biA9PSAwIHx8 IGNsb2NrLT5wID09IDApKQo+IC0JCXJldHVybjsKPiArCQlyZXR1cm4gMDsKPiAgCWNsb2NrLT52 Y28gPSBESVZfUk9VTkRfQ0xPU0VTVChyZWZjbGsgKiBjbG9jay0+bSwgY2xvY2stPm4pOwo+ICAJ Y2xvY2stPmRvdCA9IERJVl9ST1VORF9DTE9TRVNUKGNsb2NrLT52Y28sIGNsb2NrLT5wKTsKPiAr Cj4gKwlyZXR1cm4gY2xvY2stPmRvdDsKPiAgfQo+ICAKPiAgc3RhdGljIHVpbnQzMl90IGk5eHhf ZHBsbF9jb21wdXRlX20oc3RydWN0IGRwbGwgKmRwbGwpCj4gQEAgLTU2OSwzNSArNTc5LDQxIEBA IHN0YXRpYyB1aW50MzJfdCBpOXh4X2RwbGxfY29tcHV0ZV9tKHN0cnVjdCBkcGxsICpkcGxsKQo+ ICAJcmV0dXJuIDUgKiAoZHBsbC0+bTEgKyAyKSArIChkcGxsLT5tMiArIDIpOwo+ICB9Cj4gIAo+ IC1zdGF0aWMgdm9pZCBpOXh4X2Nsb2NrKGludCByZWZjbGssIGludGVsX2Nsb2NrX3QgKmNsb2Nr KQo+ICtzdGF0aWMgaW50IGk5eHhfY2FsY19kcGxsX3BhcmFtcyhpbnQgcmVmY2xrLCBpbnRlbF9j bG9ja190ICpjbG9jaykKPiAgewo+ICAJY2xvY2stPm0gPSBpOXh4X2RwbGxfY29tcHV0ZV9tKGNs b2NrKTsKPiAgCWNsb2NrLT5wID0gY2xvY2stPnAxICogY2xvY2stPnAyOwo+ICAJaWYgKFdBUk5f T04oY2xvY2stPm4gKyAyID09IDAgfHwgY2xvY2stPnAgPT0gMCkpCj4gLQkJcmV0dXJuOwo+ICsJ CXJldHVybiAwOwo+ICAJY2xvY2stPnZjbyA9IERJVl9ST1VORF9DTE9TRVNUKHJlZmNsayAqIGNs b2NrLT5tLCBjbG9jay0+biArIDIpOwo+ICAJY2xvY2stPmRvdCA9IERJVl9ST1VORF9DTE9TRVNU KGNsb2NrLT52Y28sIGNsb2NrLT5wKTsKPiArCj4gKwlyZXR1cm4gY2xvY2stPmRvdDsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgdmx2X2Nsb2NrKGludCByZWZjbGssIGludGVsX2Nsb2NrX3QgKmNs b2NrKQo+ICtzdGF0aWMgaW50IHZsdl9jYWxjX2RwbGxfcGFyYW1zKGludCByZWZjbGssIGludGVs X2Nsb2NrX3QgKmNsb2NrKQo+ICB7Cj4gIAljbG9jay0+bSA9IGNsb2NrLT5tMSAqIGNsb2NrLT5t MjsKPiAgCWNsb2NrLT5wID0gY2xvY2stPnAxICogY2xvY2stPnAyOwo+ICAJaWYgKFdBUk5fT04o Y2xvY2stPm4gPT0gMCB8fCBjbG9jay0+cCA9PSAwKSkKPiAtCQlyZXR1cm47Cj4gKwkJcmV0dXJu IDA7Cj4gIAljbG9jay0+dmNvID0gRElWX1JPVU5EX0NMT1NFU1QocmVmY2xrICogY2xvY2stPm0s IGNsb2NrLT5uKTsKPiAgCWNsb2NrLT5kb3QgPSBESVZfUk9VTkRfQ0xPU0VTVChjbG9jay0+dmNv LCBjbG9jay0+cCk7Cj4gKwo+ICsJcmV0dXJuIGNsb2NrLT5kb3QgLyA1Owo+ICB9Cj4gIAo+IC1z dGF0aWMgdm9pZCBjaHZfY2xvY2soaW50IHJlZmNsaywgaW50ZWxfY2xvY2tfdCAqY2xvY2spCj4g K2ludCBjaHZfY2FsY19kcGxsX3BhcmFtcyhpbnQgcmVmY2xrLCBpbnRlbF9jbG9ja190ICpjbG9j aykKPiAgewo+ICAJY2xvY2stPm0gPSBjbG9jay0+bTEgKiBjbG9jay0+bTI7Cj4gIAljbG9jay0+ cCA9IGNsb2NrLT5wMSAqIGNsb2NrLT5wMjsKPiAgCWlmIChXQVJOX09OKGNsb2NrLT5uID09IDAg fHwgY2xvY2stPnAgPT0gMCkpCj4gLQkJcmV0dXJuOwo+ICsJCXJldHVybiAwOwo+ICAJY2xvY2st PnZjbyA9IERJVl9ST1VORF9DTE9TRVNUX1VMTCgodWludDY0X3QpcmVmY2xrICogY2xvY2stPm0s Cj4gIAkJCWNsb2NrLT5uIDw8IDIyKTsKPiAgCWNsb2NrLT5kb3QgPSBESVZfUk9VTkRfQ0xPU0VT VChjbG9jay0+dmNvLCBjbG9jay0+cCk7Cj4gKwo+ICsJcmV0dXJuIGNsb2NrLT5kb3QgLyA1Owo+ ICB9Cj4gIAo+ICAjZGVmaW5lIElOVEVMUGxsSW52YWxpZChzKSAgIGRvIHsgLyogRFJNX0RFQlVH KHMpOyAqLyByZXR1cm4gZmFsc2U7IH0gd2hpbGUgKDApCj4gQEAgLTY5Miw3ICs3MDgsNyBAQCBp OXh4X2ZpbmRfYmVzdF9kcGxsKGNvbnN0IGludGVsX2xpbWl0X3QgKmxpbWl0LAo+ICAJCQkJCWNs b2NrLnAxIDw9IGxpbWl0LT5wMS5tYXg7IGNsb2NrLnAxKyspIHsKPiAgCQkJCQlpbnQgdGhpc19l cnI7Cj4gIAo+IC0JCQkJCWk5eHhfY2xvY2socmVmY2xrLCAmY2xvY2spOwo+ICsJCQkJCWk5eHhf Y2FsY19kcGxsX3BhcmFtcyhyZWZjbGssICZjbG9jayk7Cj4gIAkJCQkJaWYgKCFpbnRlbF9QTExf aXNfdmFsaWQoZGV2LCBsaW1pdCwKPiAgCQkJCQkJCQkmY2xvY2spKQo+ICAJCQkJCQljb250aW51 ZTsKPiBAQCAtNzM3LDcgKzc1Myw3IEBAIHBudl9maW5kX2Jlc3RfZHBsbChjb25zdCBpbnRlbF9s aW1pdF90ICpsaW1pdCwKPiAgCQkJCQljbG9jay5wMSA8PSBsaW1pdC0+cDEubWF4OyBjbG9jay5w MSsrKSB7Cj4gIAkJCQkJaW50IHRoaXNfZXJyOwo+ICAKPiAtCQkJCQlwaW5ldmlld19jbG9jayhy ZWZjbGssICZjbG9jayk7Cj4gKwkJCQkJcG52X2NhbGNfZHBsbF9wYXJhbXMocmVmY2xrLCAmY2xv Y2spOwo+ICAJCQkJCWlmICghaW50ZWxfUExMX2lzX3ZhbGlkKGRldiwgbGltaXQsCj4gIAkJCQkJ CQkJJmNsb2NrKSkKPiAgCQkJCQkJY29udGludWU7Cj4gQEAgLTc4Nyw3ICs4MDMsNyBAQCBnNHhf ZmluZF9iZXN0X2RwbGwoY29uc3QgaW50ZWxfbGltaXRfdCAqbGltaXQsCj4gIAkJCQkgICAgIGNs b2NrLnAxID49IGxpbWl0LT5wMS5taW47IGNsb2NrLnAxLS0pIHsKPiAgCQkJCQlpbnQgdGhpc19l cnI7Cj4gIAo+IC0JCQkJCWk5eHhfY2xvY2socmVmY2xrLCAmY2xvY2spOwo+ICsJCQkJCWk5eHhf Y2FsY19kcGxsX3BhcmFtcyhyZWZjbGssICZjbG9jayk7Cj4gIAkJCQkJaWYgKCFpbnRlbF9QTExf aXNfdmFsaWQoZGV2LCBsaW1pdCwKPiAgCQkJCQkJCQkmY2xvY2spKQo+ICAJCQkJCQljb250aW51 ZTsKPiBAQCAtODc3LDcgKzg5Myw3IEBAIHZsdl9maW5kX2Jlc3RfZHBsbChjb25zdCBpbnRlbF9s aW1pdF90ICpsaW1pdCwKPiAgCQkJCQljbG9jay5tMiA9IERJVl9ST1VORF9DTE9TRVNUKHRhcmdl dCAqIGNsb2NrLnAgKiBjbG9jay5uLAo+ICAJCQkJCQkJCSAgICAgcmVmY2xrICogY2xvY2subTEp Owo+ICAKPiAtCQkJCQl2bHZfY2xvY2socmVmY2xrLCAmY2xvY2spOwo+ICsJCQkJCXZsdl9jYWxj X2RwbGxfcGFyYW1zKHJlZmNsaywgJmNsb2NrKTsKPiAgCj4gIAkJCQkJaWYgKCFpbnRlbF9QTExf aXNfdmFsaWQoZGV2LCBsaW1pdCwKPiAgCQkJCQkJCQkmY2xvY2spKQo+IEBAIC05NDAsNyArOTU2 LDcgQEAgY2h2X2ZpbmRfYmVzdF9kcGxsKGNvbnN0IGludGVsX2xpbWl0X3QgKmxpbWl0LAo+ICAK PiAgCQkJY2xvY2subTIgPSBtMjsKPiAgCj4gLQkJCWNodl9jbG9jayhyZWZjbGssICZjbG9jayk7 Cj4gKwkJCWNodl9jYWxjX2RwbGxfcGFyYW1zKHJlZmNsaywgJmNsb2NrKTsKPiAgCj4gIAkJCWlm ICghaW50ZWxfUExMX2lzX3ZhbGlkKGRldiwgbGltaXQsICZjbG9jaykpCj4gIAkJCQljb250aW51 ZTsKPiBAQCAtNzkyNiwxMCArNzk0Miw3IEBAIHN0YXRpYyB2b2lkIHZsdl9jcnRjX2Nsb2NrX2dl dChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCWNsb2NrLnAxID0gKG1kaXYgPj4gRFBJT19Q MV9TSElGVCkgJiA3Owo+ICAJY2xvY2sucDIgPSAobWRpdiA+PiBEUElPX1AyX1NISUZUKSAmIDB4 MWY7Cj4gIAo+IC0Jdmx2X2Nsb2NrKHJlZmNsaywgJmNsb2NrKTsKPiAtCj4gLQkvKiBjbG9jay5k b3QgaXMgdGhlIGZhc3QgY2xvY2sgKi8KPiAtCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gY2xv Y2suZG90IC8gNTsKPiArCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gdmx2X2NhbGNfZHBsbF9w YXJhbXMocmVmY2xrLCAmY2xvY2spOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IEBAIC04MDI1 LDEwICs4MDM4LDcgQEAgc3RhdGljIHZvaWQgY2h2X2NydGNfY2xvY2tfZ2V0KHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICAJY2xvY2sucDEgPSAoY21uX2R3MTMgPj4gRFBJT19DSFZfUDFfRElW X1NISUZUKSAmIDB4NzsKPiAgCWNsb2NrLnAyID0gKGNtbl9kdzEzID4+IERQSU9fQ0hWX1AyX0RJ Vl9TSElGVCkgJiAweDFmOwo+ICAKPiAtCWNodl9jbG9jayhyZWZjbGssICZjbG9jayk7Cj4gLQo+ IC0JLyogY2xvY2suZG90IGlzIHRoZSBmYXN0IGNsb2NrICovCj4gLQlwaXBlX2NvbmZpZy0+cG9y dF9jbG9jayA9IGNsb2NrLmRvdCAvIDU7Cj4gKwlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IGNo dl9jYWxjX2RwbGxfcGFyYW1zKHJlZmNsaywgJmNsb2NrKTsKPiAgfQo+ICAKPiAgc3RhdGljIGJv b2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gQEAgLTEw NDgxLDYgKzEwNDkxLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Nsb2NrX2dldChzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiAgCXUzMiBkcGxsID0gcGlwZV9jb25maWctPmRwbGxfaHdfc3Rh dGUuZHBsbDsKPiAgCXUzMiBmcDsKPiAgCWludGVsX2Nsb2NrX3QgY2xvY2s7Cj4gKwlpbnQgcG9y dF9jbG9jazsKPiAgCWludCByZWZjbGsgPSBpOXh4X3BsbF9yZWZjbGsoZGV2LCBwaXBlX2NvbmZp Zyk7Cj4gIAo+ICAJaWYgKChkcGxsICYgRElTUExBWV9SQVRFX1NFTEVDVF9GUEExKSA9PSAwKQo+ IEBAIC0xMDUyMSw5ICsxMDUzMiw5IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19jbG9ja19nZXQo c3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJfQo+ICAKPiAgCQlpZiAoSVNfUElORVZJRVco ZGV2KSkKPiAtCQkJcGluZXZpZXdfY2xvY2socmVmY2xrLCAmY2xvY2spOwo+ICsJCQlwb3J0X2Ns b2NrID0gcG52X2NhbGNfZHBsbF9wYXJhbXMocmVmY2xrLCAmY2xvY2spOwo+ICAJCWVsc2UKPiAt CQkJaTl4eF9jbG9jayhyZWZjbGssICZjbG9jayk7Cj4gKwkJCXBvcnRfY2xvY2sgPSBpOXh4X2Nh bGNfZHBsbF9wYXJhbXMocmVmY2xrLCAmY2xvY2spOwo+ICAJfSBlbHNlIHsKPiAgCQl1MzIgbHZk cyA9IElTX0k4MzAoZGV2KSA/IDAgOiBJOTE1X1JFQUQoTFZEUyk7Cj4gIAkJYm9vbCBpc19sdmRz ID0gKHBpcGUgPT0gMSkgJiYgKGx2ZHMgJiBMVkRTX1BPUlRfRU4pOwo+IEBAIC0xMDU0OSw3ICsx MDU2MCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19jbG9ja19nZXQoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gIAkJCQljbG9jay5wMiA9IDI7Cj4gIAkJfQo+ICAKPiAtCQlpOXh4X2Nsb2Nr KHJlZmNsaywgJmNsb2NrKTsKPiArCQlwb3J0X2Nsb2NrID0gaTl4eF9jYWxjX2RwbGxfcGFyYW1z KHJlZmNsaywgJmNsb2NrKTsKPiAgCX0KPiAgCj4gIAkvKgo+IEBAIC0xMDU1Nyw3ICsxMDU2OCw3 IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gIAkgKiBwb3J0X2Nsb2NrIHRvIGNvbXB1dGUgYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2Nr IGluIHRoZQo+ICAJICogZW5jb2RlcidzIGdldF9jb25maWcoKSBmdW5jdGlvbi4KPiAgCSAqLwo+ IC0JcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSBjbG9jay5kb3Q7Cj4gKwlwaXBlX2NvbmZpZy0+ cG9ydF9jbG9jayA9IHBvcnRfY2xvY2s7Cj4gIH0KPiAgCj4gIGludCBpbnRlbF9kb3RjbG9ja19j YWxjdWxhdGUoaW50IGxpbmtfZnJlcSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4 IGUyMTc0ZmQuLjdhNWIzYmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0x MTM4LDYgKzExMzgsOCBAQCBpcm9ubGFrZV9jaGVja19lbmNvZGVyX2RvdGNsb2NrKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQkJCWludCBkb3RjbG9jayk7 Cj4gIGJvb2wgYnh0X2ZpbmRfYmVzdF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLCBpbnQgdGFyZ2V0X2Nsb2NrLAo+ICAJCQlpbnRlbF9jbG9ja190ICpiZXN0X2Nsb2Nr KTsKPiAraW50IGNodl9jYWxjX2RwbGxfcGFyYW1zKGludCByZWZjbGssIGludGVsX2Nsb2NrX3Qg KnBsbF9jbG9jayk7Cj4gKwo+ICBib29sIGludGVsX2NydGNfYWN0aXZlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0Yyk7Cj4gIHZvaWQgaHN3X2VuYWJsZV9pcHMoc3RydWN0IGludGVsX2NydGMgKmNydGMp Owo+ICB2b2lkIGhzd19kaXNhYmxlX2lwcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gLS0g Cj4gMi4xLjQKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==