From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/3] drm/i915: Use GPLL ref clock to calculate GPU freqs on VLV/CHV Date: Tue, 5 Apr 2016 22:09:15 +0300 Message-ID: <20160405190915.GX4329@intel.com> References: <1457120584-26080-1-git-send-email-ville.syrjala@linux.intel.com> <1457120584-26080-2-git-send-email-ville.syrjala@linux.intel.com> <1458148671.4473.39.camel@intel.com> <20160316174706.GS4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 0AD966E816 for ; Tue, 5 Apr 2016 19:09:20 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20160316174706.GS4329@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 T24gV2VkLCBNYXIgMTYsIDIwMTYgYXQgMDc6NDc6MDZQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgTWFyIDE2LCAyMDE2IGF0IDA3OjE3OjUxUE0gKzAyMDAsIEltcmUg RGVhayB3cm90ZToKPiA+IE9uIEZyaSwgMjAxNi0wMy0wNCBhdCAyMTo0MyArMDIwMCwgdmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gPiA+IEZyb206IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+IAo+ID4gPiBFeHRyYWN0IHRo ZSBHUExMIHJlZmVyZW5jZSBmcmVxdWVuY3kgZnJvbSBDQ0sgYW5kIHVzZSBpdCBpbiB0aGUKPiA+ ID4gR1BVIGZyZXE8LT5vcGNvZGUgY29udmVyc2lvbnMgb24gVkxWL0NIVi4gVGhpcyBlbGltaW5h dGVzIGFsbCB0aGUKPiA+ID4gYXNzdW1wdGlvbnMgd2UgaGF2ZSBhYm91dCB3aGljaCBkaXZpZGVy IGlzIHVzZWQgZm9yIHdoaWNoIGN6Y2xrCj4gPiA+IGZyZXF1ZW5jeS4KPiA+ID4gCj4gPiA+IE5v dGUgdGhhdCB1bmxpa2UgbW9zdCBjbG9ja3MgZnJvbSBDQ0ssIHRoZSBHUExMIHJlZiBjbG9jayBp cyBhIGRpdmlkZWQKPiA+ID4gZG93biB2ZXJzaW9uIG9mIHRoZSBDWiBjbG9jayByYXRoZXIgdGhh biB0aGUgSFBMTCBjbG9jay4gQ1ogY2xvY2sgaXRzZWxmCj4gPiA+IGlzIGEgZGl2aWRlZCBkb3du IHZlcnNpb24gb2YgdGhlIEhQTEwgY2xvY2sgdGhvdWdoLCBzbyBpbiBlZmZlY3QgaXQganVzdAo+ ID4gPiBnZXRzIGRpdmlkZWQgZG93biB0d2ljZS4KPiA+ID4gCj4gPiA+IFdoaWxlIGF0IGl0LCB0 aHJvdyBpbiBhIGZldyBjb21tZW50cyBleHBsYWluaW5nIHRoZSByZW1haW5pbmcgY29uc3RhbnRz Cj4gPiA+IGZvciBhbnlvbmUgd2hvIGxhdGVyIHdhbnRzIHRvIGNvbXBhcmUgdGhpcyB0byB0aGUg c3ByZWFkc2hlZXRzLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOk IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IAo+ID4gTG9va3Mgb2suIFRoZSBy ZWxldmFudCBpbmZvIGlzIHNwcmVhZCBhY3Jvc3MgbXVsdGlwbGUgZG9jdW1lbnRzIGJ1dAo+ID4g YmFzZWQgb24gd2hhdCBJIGdhdGhlcmVkIHRoaXMgaXMgb2sgYW5kIHRoZSBvbGQgYW5kIG5ldyB3 YXkgb2YKPiA+IGNhbGN1bGF0aW9uIG1hdGNoZXMsIHNvOgo+ID4gUmV2aWV3ZWQtYnk6IEltcmUg RGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+IAo+ID4gU29tZSBub3RlczoKPiA+IEZvciBj bGFyaXR5LCBJJ2QgcmVuYW1lICpfZ3B1X2ZyZXEgdG8gKl9ncHVfb3Bjb2RlX3RvX2ZyZXEgYW5k Cj4gPiAqX2ZyZXFfb3Bjb2RlIHRvICpfZ3B1X2ZyZXFfdG9fb3Bjb2RlIGFuZCBtZW50aW9uIHRo YXQgdGhlIENIViBDVS9DVTJYCj4gPiBjbG9ja3MgYXJlIGFsc28ga25vd24gYXMgc2xvdy9mYXN0 IGNsb2NrLCBzbyBpdCBiZXR0ZXIgbWF0Y2hlcyB0aGUgVkxWCj4gPiBjb2RlLgo+IAo+IFdlbGwg SSB0aGluayB0aGUgc2xvdy9mYXN0IG5hbWVzIG1pZ2h0IGJlIG1vcmUgb2YgYSBsZWZ0b3ZlciBm cm9tIFZMViwKPiBpZS4gc29tZW9uZSBqdXN0IGZvcmdvdCB0byB1cGRhdGUgdGhlIG5hbWVzIGlu IGJ1bmNoIG9mIHRoZSBkb2NzIGZvcgo+IENIVi4gQnV0IGFkZGluZyBhIG5vdGUgbWlnaHQgYmUg cHJ1ZGVudCB0byBhdm9pZCBwZW9wbGUgaGF2aW5nIHRvCj4gd29uZGVyIGFib3V0IGl0LgoKQ2hh bmdlZCB0aGUgY29tbWVudCB0bwoiQ1UgKHNsb3cpID0gQ1UyeCAoZmFzdCkgLyAyID0gR1BMTCBy ZWYgKiBOIC8gMiIKCmFuZCBwdXNoZWQgdGhlIGZpcnN0IHR3byBwYXRjaGVzIGZyb20gdGhlIHNl cmllcyB0byBkaW5xLgpUaGFua3MgZm9yIHRoZSByZXZpZXcuCgo+IAo+ID4gCj4gPiBUaGUgZW50 cmllcyBmb3IgVkxWIDMyMC80MDBNSHogQ1ogY2xvY2sgYXJlIG1pc3NpbmcgZnJvbSB0aGUgdGFi bGVzCj4gPiB0aGF0IEkgc2F3LCB3aGljaCBpcyBvbmUganVzdGlmaWNhdGlvbiBmb3IgdGhpcyBj aGFuZ2UsIHNpbmNlIHdlIGRvbid0Cj4gPiBrbm93IGlmwqB2bHZfZ3B1X2ZyZXFfZGl2KCkgd2Fz IGNvcnJlY3QuCj4gCj4gSSBkb24ndCB0aGluayBWTFYgaGFkIDMyMCBvciA0MDAgU0tVcy4KPiAK PiA+IAo+ID4gLS1JbXJlCj4gPiAKPiA+IAo+ID4gCj4gPiA+IC0tLQo+ID4gPiDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmjCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE5ICsrKysrKy0tLQo+ID4gPiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDCoHzCoMKgMiArCj4gPiA+ IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uY8KgwqDCoMKgwqDCoHwgNzQgKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+IMKgNSBmaWxlcyBjaGFuZ2VkLCA0 NCBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+ID4gPiBpbmRleCBmMzdhYzEyMGEyOWQuLjk1Zjc3Y2QwY2UxNyAxMDA2NDQK PiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+IEBAIC0xMTY2LDYgKzExNjYsNyBA QCBzdHJ1Y3QgaW50ZWxfZ2VuNl9wb3dlcl9tZ210IHsKPiA+ID4gwqAJdTggZWZmaWNpZW50X2Zy ZXE7CS8qIEFLQSBSUGUuIFByZS1kZXRlcm1pbmVkIGJhbGFuY2VkIGZyZXF1ZW5jeSAqLwo+ID4g PiDCoAl1OCBycDFfZnJlcTsJCS8qICJsZXNzIHRoYW4iIFJQMCBwb3dlci9mcmVxZW5jeSAqLwo+ ID4gPiDCoAl1OCBycDBfZnJlcTsJCS8qIE5vbi1vdmVyY2xvY2tlZCBtYXggZnJlcXVlbmN5LiAq Lwo+ID4gPiArCXUxNiBncGxsX3JlZl9mcmVxOwkvKiB2bHYvY2h2IEdQTEwgcmVmZXJlbmNlIGZy ZXF1ZW5jeSAqLwo+ID4gPiDCoAo+ID4gPiDCoAl1OCB1cF90aHJlc2hvbGQ7IC8qIEN1cnJlbnQg JWJ1c3kgcmVxdWlyZWQgdG8gdXBsb2NrICovCj4gPiA+IMKgCXU4IGRvd25fdGhyZXNob2xkOyAv KiBDdXJyZW50ICVidXN5IHJlcXVpcmVkIHRvIGRvd25jbG9jayAqLwo+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKPiA+ID4gaW5kZXggN2RmYzQwMDdmM2ZhLi5hYTIxYmZjMDZhMjQgMTAwNjQ0 Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiBAQCAtNzg1LDYgKzc4NSw3IEBA IGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ID4gPiDCoCNkZWZpbmXCoMKgRFNJX1BMTF9N MV9ESVZfU0hJRlQJCQkwCj4gPiA+IMKgI2RlZmluZcKgwqBEU0lfUExMX00xX0RJVl9NQVNLCQkJ KDB4MWZmIDw8IDApCj4gPiA+IMKgI2RlZmluZSBDQ0tfQ1pfQ0xPQ0tfQ09OVFJPTAkJCTB4NjIK PiA+ID4gKyNkZWZpbmUgQ0NLX0dQTExfQ0xPQ0tfQ09OVFJPTAkJCTB4NjcKPiA+ID4gwqAjZGVm aW5lIENDS19ESVNQTEFZX0NMT0NLX0NPTlRST0wJCTB4NmIKPiA+ID4gwqAjZGVmaW5lIENDS19E SVNQTEFZX1JFRl9DTE9DS19DT05UUk9MCQkweDZjCj4gPiA+IMKgI2RlZmluZcKgwqBDQ0tfVFJV TktfRk9SQ0VfT04JCQkoMSA8PCAxNykKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+ID4gPiBpbmRleCA2MmQzNmE3YjMzOTguLmJhNTBkZTUzNGY5YSAxMDA2NDQKPiA+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiBAQCAtMTQ3LDE1ICsxNDcs MTIgQEAgc3RhdGljIGludCB2YWxsZXl2aWV3X2dldF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ID4gPiDCoAlyZXR1cm4gdmNvX2ZyZXFbaHBsbF9mcmVxXSAqIDEwMDA7 Cj4gPiA+IMKgfQo+ID4gPiDCoAo+ID4gPiAtc3RhdGljIGludCB2bHZfZ2V0X2Nja19jbG9ja19o cGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gLQkJCQnCoMKgY29u c3QgY2hhciAqbmFtZSwgdTMyIHJlZykKPiA+ID4gK2ludCB2bHZfZ2V0X2Nja19jbG9jayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICsJCcKgwqDCoMKgwqDCoGNvbnN0 IGNoYXIgKm5hbWUsIHUzMiByZWcsIGludCByZWZfZnJlcSkKPiA+ID4gwqB7Cj4gPiA+IMKgCXUz MiB2YWw7Cj4gPiA+IMKgCWludCBkaXZpZGVyOwo+ID4gPiDCoAo+ID4gPiAtCWlmIChkZXZfcHJp di0+aHBsbF9mcmVxID09IDApCj4gPiA+IC0JCWRldl9wcml2LT5ocGxsX2ZyZXEgPSB2YWxsZXl2 aWV3X2dldF92Y28oZGV2X3ByaXYpOwo+ID4gPiAtCj4gPiA+IMKgCW11dGV4X2xvY2soJmRldl9w cml2LT5zYl9sb2NrKTsKPiA+ID4gwqAJdmFsID0gdmx2X2Nja19yZWFkKGRldl9wcml2LCByZWcp Owo+ID4gPiDCoAltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiA+ID4gQEAgLTE2 Niw3ICsxNjMsMTcgQEAgc3RhdGljIGludCB2bHZfZ2V0X2Nja19jbG9ja19ocGxsKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gwqAJwqDCoMKgwqDCoChkaXZpZGVyIDw8 IENDS19GUkVRVUVOQ1lfU1RBVFVTX1NISUZUKSwKPiA+ID4gwqAJwqDCoMKgwqDCoCIlcyBjaGFu Z2UgaW4gcHJvZ3Jlc3NcbiIsIG5hbWUpOwo+ID4gPiDCoAo+ID4gPiAtCXJldHVybiBESVZfUk9V TkRfQ0xPU0VTVChkZXZfcHJpdi0+aHBsbF9mcmVxIDw8IDEsIGRpdmlkZXIgKyAxKTsKPiA+ID4g KwlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QocmVmX2ZyZXEgPDwgMSwgZGl2aWRlciArIDEpOwo+ ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IHZsdl9nZXRfY2NrX2Nsb2NrX2hwbGwo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiArCQkJCcKgwqBjb25zdCBj aGFyICpuYW1lLCB1MzIgcmVnKQo+ID4gPiArewo+ID4gPiArCWlmIChkZXZfcHJpdi0+aHBsbF9m cmVxID09IDApCj4gPiA+ICsJCWRldl9wcml2LT5ocGxsX2ZyZXEgPSB2YWxsZXl2aWV3X2dldF92 Y28oZGV2X3ByaXYpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHZsdl9nZXRfY2NrX2Nsb2NrKGRl dl9wcml2LCBuYW1lLCByZWcsCj4gPiA+ICsJCQkJwqBkZXZfcHJpdi0+aHBsbF9mcmVxKTsKPiA+ ID4gwqB9Cj4gPiA+IMKgCj4gPiA+IMKgc3RhdGljIGludAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ID4gPiBpbmRleCBjZDBiNGVhY2JkZGYuLmM0MTZmMGFkYWU0OCAxMDA2NDQKPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gQEAgLTExMTYsNiArMTExNiw4IEBA IHZvaWQgaTkxNV9hdWRpb19jb21wb25lbnRfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwo+ID4gPiDCoHZvaWQgaTkxNV9hdWRpb19jb21wb25lbnRfY2xlYW51cChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gPiDCoAo+ID4gPiDCoC8qIGludGVs X2Rpc3BsYXkuYyAqLwo+ID4gPiAraW50IHZsdl9nZXRfY2NrX2Nsb2NrKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gKwkJwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqbmFt ZSwgdTMyIHJlZywgaW50IHJlZl9mcmVxKTsKPiA+ID4gwqBleHRlcm4gY29uc3Qgc3RydWN0IGRy bV9wbGFuZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jczsKPiA+ID4gwqB1bnNpZ25lZCBpbnQgaW50 ZWxfcm90YXRpb25faW5mb19zaXplKGNvbnN0IHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvICpy b3RfaW5mbyk7Cj4gPiA+IMKgYm9vbCBpbnRlbF9oYXNfcGVuZGluZ19mYl91bnBpbihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiA+IGluZGV4 IGY2NWU4NDEzNzA2MC4uYzUzYjhjNGQzODFjIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPiA+ID4gQEAgLTUzNjQsNiArNTM2NCwxNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2 aWV3X2NsZWFudXBfcGN0eChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPiDCoAlkZXZfcHJp di0+dmx2X3BjdHggPSBOVUxMOwo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gK3N0YXRpYyB2b2lk IHZsdl9pbml0X2dwbGxfcmVmX2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ID4gPiArewo+ID4gPiArCWRldl9wcml2LT5ycHMuZ3BsbF9yZWZfZnJlcSA9Cj4gPiA+ICsJ CXZsdl9nZXRfY2NrX2Nsb2NrKGRldl9wcml2LCAiR1BMTCByZWYiLAo+ID4gPiArCQkJCcKgwqBD Q0tfR1BMTF9DTE9DS19DT05UUk9MLAo+ID4gPiArCQkJCcKgwqBkZXZfcHJpdi0+Y3pjbGtfZnJl cSk7Cj4gPiA+ICsKPiA+ID4gKwlEUk1fREVCVUdfRFJJVkVSKCJHUExMIHJlZmVyZW5jZSBmcmVx OiAlZCBrSHpcbiIsCj4gPiA+ICsJCQnCoGRldl9wcml2LT5ycHMuZ3BsbF9yZWZfZnJlcSk7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gwqBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2luaXRfZ3RfcG93 ZXJzYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+IMKgewo+ID4gPiDCoAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gPiBAQCAt NTM3MSw2ICs1MzgyLDggQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19pbml0X2d0X3Bvd2Vyc2F2 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPiDCoAo+ID4gPiDCoAl2YWxsZXl2aWV3X3Nl dHVwX3BjdHgoZGV2KTsKPiA+ID4gwqAKPiA+ID4gKwl2bHZfaW5pdF9ncGxsX3JlZl9mcmVxKGRl dl9wcml2KTsKPiA+ID4gKwo+ID4gPiDCoAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xv Y2spOwo+ID4gPiDCoAo+ID4gPiDCoAl2YWwgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVO SVRfUkVHX0dQVV9GUkVRX1NUUyk7Cj4gPiA+IEBAIC01NDI4LDYgKzU0NDEsOCBAQCBzdGF0aWMg dm9pZCBjaGVycnl2aWV3X2luaXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gPiA+IMKgCj4gPiA+IMKgCWNoZXJyeXZpZXdfc2V0dXBfcGN0eChkZXYpOwo+ID4gPiDCoAo+ ID4gPiArCXZsdl9pbml0X2dwbGxfcmVmX2ZyZXEoZGV2X3ByaXYpOwo+ID4gPiArCj4gPiA+IMKg CW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gPiA+IMKgCj4gPiA+IMKgCW11 dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiA+ID4gQEAgLTcyNjEsNjggKzcyNzYsMzMg QEAgaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiB2YWwKPiA+ID4gwqAJcmV0dXJuIDA7Cj4gPiA+IMKgfQo+ ID4gPiDCoAo+ID4gPiAtc3RhdGljIGludCB2bHZfZ3B1X2ZyZXFfZGl2KHVuc2lnbmVkIGludCBj emNsa19mcmVxKQo+ID4gPiAtewo+ID4gPiAtCXN3aXRjaCAoY3pjbGtfZnJlcSkgewo+ID4gPiAt CWNhc2UgMjAwOgo+ID4gPiAtCQlyZXR1cm4gMTA7Cj4gPiA+IC0JY2FzZSAyNjc6Cj4gPiA+IC0J CXJldHVybiAxMjsKPiA+ID4gLQljYXNlIDMyMDoKPiA+ID4gLQljYXNlIDMzMzoKPiA+ID4gLQkJ cmV0dXJuIDE2Owo+ID4gPiAtCWNhc2UgNDAwOgo+ID4gPiAtCQlyZXR1cm4gMjA7Cj4gPiA+IC0J ZGVmYXVsdDoKPiA+ID4gLQkJcmV0dXJuIC0xOwo+ID4gPiAtCX0KPiA+ID4gLX0KPiA+ID4gLQo+ ID4gPiDCoHN0YXRpYyBpbnQgYnl0X2dwdV9mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgaW50IHZhbCkKPiA+ID4gwqB7Cj4gPiA+IC0JaW50IGRpdiwgY3pjbGtfZnJlcSA9 IERJVl9ST1VORF9DTE9TRVNUKGRldl9wcml2LT5jemNsa19mcmVxLCAxMDAwKTsKPiA+ID4gLQo+ ID4gPiAtCWRpdiA9IHZsdl9ncHVfZnJlcV9kaXYoY3pjbGtfZnJlcSk7Cj4gPiA+IC0JaWYgKGRp diA8IDApCj4gPiA+IC0JCXJldHVybiBkaXY7Cj4gPiA+IC0KPiA+ID4gLQlyZXR1cm4gRElWX1JP VU5EX0NMT1NFU1QoY3pjbGtfZnJlcSAqICh2YWwgKyA2IC0gMHhiZCksIGRpdik7Cj4gPiA+ICsJ LyoKPiA+ID4gKwnCoCogTiA9IHZhbCAtIDB4YjcKPiA+ID4gKwnCoCogU2xvdyA9IEZhc3QgPSBH UExMIHJlZiAqIE4KPiA+ID4gKwnCoCovCj4gPiA+ICsJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNU KGRldl9wcml2LT5ycHMuZ3BsbF9yZWZfZnJlcSAqICh2YWwgLSAweGI3KSwgMTAwMCk7Cj4gPiA+ IMKgfQo+ID4gPiDCoAo+ID4gPiDCoHN0YXRpYyBpbnQgYnl0X2ZyZXFfb3Bjb2RlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZhbCkKPiA+ID4gwqB7Cj4gPiA+IC0JaW50 IG11bCwgY3pjbGtfZnJlcSA9IERJVl9ST1VORF9DTE9TRVNUKGRldl9wcml2LT5jemNsa19mcmVx LCAxMDAwKTsKPiA+ID4gLQo+ID4gPiAtCW11bCA9IHZsdl9ncHVfZnJlcV9kaXYoY3pjbGtfZnJl cSk7Cj4gPiA+IC0JaWYgKG11bCA8IDApCj4gPiA+IC0JCXJldHVybiBtdWw7Cj4gPiA+IC0KPiA+ ID4gLQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QobXVsICogdmFsLCBjemNsa19mcmVxKSArIDB4 YmQgLSA2Owo+ID4gPiArCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVCgxMDAwICogdmFsLCBkZXZf cHJpdi0+cnBzLmdwbGxfcmVmX2ZyZXEpICsgMHhiNzsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+ IMKgc3RhdGljIGludCBjaHZfZ3B1X2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBpbnQgdmFsKQo+ID4gPiDCoHsKPiA+ID4gLQlpbnQgZGl2LCBjemNsa19mcmVxID0gRElW X1JPVU5EX0NMT1NFU1QoZGV2X3ByaXYtPmN6Y2xrX2ZyZXEsIDEwMDApOwo+ID4gPiAtCj4gPiA+ IC0JZGl2ID0gdmx2X2dwdV9mcmVxX2RpdihjemNsa19mcmVxKTsKPiA+ID4gLQlpZiAoZGl2IDwg MCkKPiA+ID4gLQkJcmV0dXJuIGRpdjsKPiA+ID4gLQlkaXYgLz0gMjsKPiA+ID4gLQo+ID4gPiAt CXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChjemNsa19mcmVxICogdmFsLCAyICogZGl2KSAvIDI7 Cj4gPiA+ICsJLyoKPiA+ID4gKwnCoCogTiA9IHZhbCAvIDIKPiA+ID4gKwnCoCogQ1UgPSBDVTJ4 IC8gMiA9IEdQTEwgcmVmICogTiAvIDIKPiA+ID4gKwnCoCovCj4gPiA+ICsJcmV0dXJuIERJVl9S T1VORF9DTE9TRVNUKGRldl9wcml2LT5ycHMuZ3BsbF9yZWZfZnJlcSAqIHZhbCwgMiAqIDIgKiAx MDAwKTsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+IMKgc3RhdGljIGludCBjaHZfZnJlcV9vcGNv ZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmFsKQo+ID4gPiDCoHsK PiA+ID4gLQlpbnQgbXVsLCBjemNsa19mcmVxID0gRElWX1JPVU5EX0NMT1NFU1QoZGV2X3ByaXYt PmN6Y2xrX2ZyZXEsIDEwMDApOwo+ID4gPiAtCj4gPiA+IC0JbXVsID0gdmx2X2dwdV9mcmVxX2Rp dihjemNsa19mcmVxKTsKPiA+ID4gLQlpZiAobXVsIDwgMCkKPiA+ID4gLQkJcmV0dXJuIG11bDsK PiA+ID4gLQltdWwgLz0gMjsKPiA+ID4gLQo+ID4gPiDCoAkvKiBDSFYgbmVlZHMgZXZlbiB2YWx1 ZXMgKi8KPiA+ID4gLQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QodmFsICogMiAqIG11bCwgY3pj bGtfZnJlcSkgKiAyOwo+ID4gPiArCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVCgyICogMTAwMCAq IHZhbCwgZGV2X3ByaXYtPnJwcy5ncGxsX3JlZl9mcmVxKSAqIDI7Cj4gPiA+IMKgfQo+ID4gPiDC oAo+ID4gPiDCoGludCBpbnRlbF9ncHVfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGludCB2YWwpCj4gCj4gLS0gCj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwgT1RDCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAK VmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK