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: unify the x_modeset_calc_cdclk() functions Date: Thu, 2 Mar 2017 22:28:05 +0200 Message-ID: <20170302202805.GM31595@intel.com> References: <1487620842-22893-1-git-send-email-paulo.r.zanoni@intel.com> <1487620842-22893-2-git-send-email-paulo.r.zanoni@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 227806EC36 for ; Thu, 2 Mar 2017 20:28:09 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1487620842-22893-2-git-send-email-paulo.r.zanoni@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBGZWIgMjAsIDIwMTcgYXQgMDU6MDA6NDBQTSAtMDMwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IFRoZXJlJ3MgYSBsb3Qgb2YgZHVwbGljYXRlZCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBs b2dpYyBpbiB0aGUgY3VycmVudAo+IG1vZGVzZXRfY2FsY19jZGNsaygpIGZ1bmN0aW9ucy4gQWRk aW5nIGNkY2xrIHN1cHBvcnQgZm9yIG1vcmUKPiBwbGF0Zm9ybXMgd2lsbCBvbmx5IGFkZCBtb3Jl IGNvcGllcyBvZiB0aGlzIGNvZGUuCj4gCj4gVG8gc29sdmUgdGhpcyBwcm9ibGVtLCBpbiB0aGlz IHBhdGNoIHdlIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBjYWxsZWQKPiBpbnRlbF9tb2Rlc2V0X2Nh bGNfY2RjbGsoKSB3aGljaCB1bmlmaWVzIHRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudAo+IGxvZ2lj LCBhbmQgd2UgYWxzbyBjcmVhdGUgYSBuZXcgdmZ1bmMgY2FsbGVkIGNhbGNfY2RjbGtfc3RhdGUo KSwgd2hpY2gKPiBpcyByZXNwb25zaWJsZSB0byBjb250YWluIG9ubHkgdGhlIHBsYXRmb3JtLWRl cGVuZGVudCBjb2RlLgo+IAo+IFRoZSBjb2RlIGlzIG5vdyBzbWFsbGVyIGFuZCBzdXBwb3J0IGZv ciBuZXcgcGxhdGZvcm1zIHNob3VsZCBiZSBlYXNpZXIKPiBhbmQgbm90IHJlcXVpcmUgZHVwbGlj YXRlZCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBjb2RlLgo+IAo+IHYyOiBQcmV2aW91c2x5IEkgaGFk IDIgZGlmZmVyZW50IHBhdGNoZXMgYWRkcmVzc2luZyB0aGVzZSBwcm9ibGVtcywKPiBidXQgd2lo dCBWaWxsZSdzIHN1Z2dlc3Rpb24gSSB0aGluayBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIGtlZXAK PiBldmVyeXRoaW5nIGluIGEgc2luZ2xlIHBhdGNoIChWaWxsZSkuCj4gCj4gQ2M6IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IFJvZHJpZ28gVml2 aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBQYXVsbyBaYW5vbmkg PHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCAgICAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nk Y2xrLmMgICB8IDE4NyArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAxICsKPiAgNCBmaWxlcyBjaGFuZ2VkLCA2MCBp bnNlcnRpb25zKCspLCAxMzggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gaW5kZXggNGU3MDQ2ZC4uZjFjMzVjNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IEBAIC02NDQsNyArNjQ0LDkgQEAgc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVuY3Mgewo+ICAJ CQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpOwo+ICAJaW50ICgqY29tcHV0 ZV9nbG9iYWxfd2F0ZXJtYXJrcykoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiAg CXZvaWQgKCp1cGRhdGVfd20pKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsKPiAtCWludCAoKm1v ZGVzZXRfY2FsY19jZGNsaykoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiArCXZv aWQgKCpjYWxjX2NkY2xrX3N0YXRlKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gKwkJCQkgaW50IG1heF9waXhjbGssCj4gKwkJCQkgc3RydWN0IGludGVsX2NkY2xrX3N0YXRl ICpjZGNsa19zdGF0ZSk7Cj4gIAkvKiBSZXR1cm5zIHRoZSBhY3RpdmUgc3RhdGUgb2YgdGhlIGNy dGMsIGFuZCBpZiB0aGUgY3J0YyBpcyBhY3RpdmUsCj4gIAkgKiBmaWxscyBvdXQgdGhlIHBpcGUt Y29uZmlnIHdpdGggdGhlIGh3IHN0YXRlLiAqLwo+ICAJYm9vbCAoKmdldF9waXBlX2NvbmZpZyko c3RydWN0IGludGVsX2NydGMgKiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY2RjbGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKPiBpbmRl eCBkNjQzYzBjLi5kZDZmZTI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NkY2xrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4g QEAgLTE0OTYsMTQ4ICsxNDk2LDY5IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWF4X3BpeGVsX3JhdGUo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJcmV0dXJuIG1heF9waXhlbF9yYXRl Owo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IHZsdl9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICtzdGF0aWMgdm9pZCB2bHZfY2FsY19jZGNsa19zdGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgaW50IG1heF9waXhj bGssCj4gKwkJCQkgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKPiAgewo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2 KTsKPiAtCWludCBtYXhfcGl4Y2xrID0gaW50ZWxfbWF4X3BpeGVsX3JhdGUoc3RhdGUpOwo+IC0J c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQo+IC0JCXRvX2ludGVsX2F0 b21pY19zdGF0ZShzdGF0ZSk7Cj4gLQlpbnQgY2RjbGs7Cj4gLQo+IC0JY2RjbGsgPSB2bHZfY2Fs Y19jZGNsayhkZXZfcHJpdiwgbWF4X3BpeGNsayk7Cj4gLQo+IC0JaWYgKGNkY2xrID4gZGV2X3By aXYtPm1heF9jZGNsa19mcmVxKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygicmVxdWVzdGVkIGNkY2xr ICglZCBrSHopIGV4Y2VlZHMgbWF4ICglZCBrSHopXG4iLAo+IC0JCQkgICAgICBjZGNsaywgZGV2 X3ByaXYtPm1heF9jZGNsa19mcmVxKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAtCj4g LQlpbnRlbF9zdGF0ZS0+Y2RjbGsubG9naWNhbC5jZGNsayA9IGNkY2xrOwo+IC0KPiAtCWlmICgh aW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcykgewo+IC0JCWNkY2xrID0gdmx2X2NhbGNfY2RjbGso ZGV2X3ByaXYsIDApOwo+IC0KPiAtCQlpbnRlbF9zdGF0ZS0+Y2RjbGsuYWN0dWFsLmNkY2xrID0g Y2RjbGs7Cj4gLQl9IGVsc2Ugewo+IC0JCWludGVsX3N0YXRlLT5jZGNsay5hY3R1YWwgPQo+IC0J CQlpbnRlbF9zdGF0ZS0+Y2RjbGsubG9naWNhbDsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gMDsKPiAr CWNkY2xrX3N0YXRlLT5jZGNsayA9IHZsdl9jYWxjX2NkY2xrKGRldl9wcml2LCBtYXhfcGl4Y2xr KTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBiZHdfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArc3RhdGljIHZvaWQgYmR3X2NhbGNfY2RjbGtfc3Rh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJIGludCBtYXhfcGl4 Y2xrLAo+ICsJCQkJIHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRl dik7Cj4gLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVs X2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4gLQlpbnQgbWF4X3BpeGNsayA9IGludGVsX21heF9waXhl bF9yYXRlKHN0YXRlKTsKPiAtCWludCBjZGNsazsKPiAtCj4gLQkvKgo+IC0JICogRklYTUUgc2hv dWxkIGFsc28gYWNjb3VudCBmb3IgcGxhbmUgcmF0aW8KPiAtCSAqIG9uY2UgNjRicHAgcGl4ZWwg Zm9ybWF0cyBhcmUgc3VwcG9ydGVkLgo+IC0JICovCj4gLQljZGNsayA9IGJkd19jYWxjX2NkY2xr KG1heF9waXhjbGspOwo+IC0KPiAtCWlmIChjZGNsayA+IGRldl9wcml2LT5tYXhfY2RjbGtfZnJl cSkgewo+IC0JCURSTV9ERUJVR19LTVMoInJlcXVlc3RlZCBjZGNsayAoJWQga0h6KSBleGNlZWRz IG1heCAoJWQga0h6KVxuIiwKPiAtCQkJICAgICAgY2RjbGssIGRldl9wcml2LT5tYXhfY2RjbGtf ZnJlcSk7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4gLQo+IC0JaW50ZWxfc3RhdGUtPmNk Y2xrLmxvZ2ljYWwuY2RjbGsgPSBjZGNsazsKPiAtCj4gLQlpZiAoIWludGVsX3N0YXRlLT5hY3Rp dmVfY3J0Y3MpIHsKPiAtCQljZGNsayA9IGJkd19jYWxjX2NkY2xrKDApOwo+IC0KPiAtCQlpbnRl bF9zdGF0ZS0+Y2RjbGsuYWN0dWFsLmNkY2xrID0gY2RjbGs7Cj4gLQl9IGVsc2Ugewo+IC0JCWlu dGVsX3N0YXRlLT5jZGNsay5hY3R1YWwgPQo+IC0JCQlpbnRlbF9zdGF0ZS0+Y2RjbGsubG9naWNh bDsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gMDsKPiArCWNkY2xrX3N0YXRlLT5jZGNsayA9IGJkd19j YWxjX2NkY2xrKG1heF9waXhjbGspOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IHNrbF9tb2Rlc2V0 X2NhbGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICtzdGF0aWMgdm9p ZCBza2xfY2FsY19jZGNsa19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gKwkJCQkgaW50IG1heF9waXhjbGssCj4gKwkJCQkgc3RydWN0IGludGVsX2NkY2xrX3N0YXRl ICpjZGNsa19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxf c3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKPiAtCWNvbnN0IGludCBt YXhfcGl4Y2xrID0gaW50ZWxfbWF4X3BpeGVsX3JhdGUoc3RhdGUpOwo+IC0JaW50IGNkY2xrLCB2 Y287Cj4gKwlpZiAoIWNkY2xrX3N0YXRlLT52Y28pCj4gKwkJY2RjbGtfc3RhdGUtPnZjbyA9IGRl dl9wcml2LT5za2xfcHJlZmVycmVkX3Zjb19mcmVxOwoKSG1tLiBUbyBtYWludGFpbiB0aGUgYmVo YXZpb3VyIG9mIHRoZSBvbGQgY29kZSB3ZSB3b3VsZCBuZWVkIHRvCmV4cGxpY2l0bHkgcGx1Y2sg dGhlIHZjbyBmcm9tIHRoZSBsb2dpY2lhbCBjZGNsayBzdGF0ZS4gT3RoZXJ3aXNlCndoZW4gd2Un cmUgY29tcHV0aW5nIHRoZSBhY3R1YWwgY2RjbGsgc3RhdGUgd2UgbWlnaHQgY2hvb3NlIHRoZQp3 cm9uZyB2Y28uCgpXZWxsLCBJIG11c3QgYWRtaXQgSSdtIG5vdCAxMDAlIHN1cmUgdGhhdCB3ZSBj b3VsZCBnZXQgdGhlIHdyb25nCmFuc3dlci4gSSdkIGhhdmUgdG8gZ28gdGhyb3VnaCB0aGUgZW50 aXJlIHRoaW5nIGFnYWluLCB0aGlua2luZwphYm91dCBhbGwgdGhlIGNhc2VzIHdoZW4gdGhlIHZj byBtaWdodCBjaGFuZ2UuIEJ1dCBzaW5jZSBJJ20gZmVlbGluZwphIGxpdHRsZSBsYXp5IEkgZG9u J3QgcmVhbGx5IHdhbnQgdG8gZG8gdGhhdC4gU28gSSB0aGluayBpdCB3b3VsZApiZSBzYWZlciB0 byBrZWVwIHRvIHRoZSBjdXJyZW50IHdheSBvZiBkb2luZyB0aGluZ3MuCgpBbiBhbHRlcm5hdGl2 ZSB3b3VsZCBiZSB0byBhbHdheXMgZG8gdGhlIGFjdHVhbD1sb2dpY2FsIGFzc2lnbm1lbnQKaW4g aW50ZWxfbW9kZXNldF9jYWxjX2NkY2xrKCkgc28gdGhhdCB0aGUgYWN0dWFsLnZjbz09bG9naWNh bC52Y28KYnkgdGhlIHRpbWUgd2UgY29tcHV0ZSB0aGUgYWN0dWFsIGNkY2xrIHN0YXRlLiBUaGlz IGZlZWxzIGEgbGl0dGxlCmNsZWFuZXIgcGVyaGFwcywgYnV0IGNvdWxkIHByb2JhYmx5IHVzZSBh IGNvbW1lbnQgdG8gYXZvaWQgc29tZW9uZQpvcHRpbWl6aW5nIHRoZSBjb3B5IGF3YXkgYWdhaW4u Cgo+ICAKPiAtCXZjbyA9IGludGVsX3N0YXRlLT5jZGNsay5sb2dpY2FsLnZjbzsKPiAtCWlmICgh dmNvKQo+IC0JCXZjbyA9IGRldl9wcml2LT5za2xfcHJlZmVycmVkX3Zjb19mcmVxOwo+IC0KPiAt CS8qCj4gLQkgKiBGSVhNRSBzaG91bGQgYWxzbyBhY2NvdW50IGZvciBwbGFuZSByYXRpbwo+IC0J ICogb25jZSA2NGJwcCBwaXhlbCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCj4gLQkgKi8KPiAtCWNk Y2xrID0gc2tsX2NhbGNfY2RjbGsobWF4X3BpeGNsaywgdmNvKTsKPiAtCj4gLQlpZiAoY2RjbGsg PiBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJyZXF1ZXN0 ZWQgY2RjbGsgKCVkIGtIeikgZXhjZWVkcyBtYXggKCVkIGtIeilcbiIsCj4gLQkJCSAgICAgIGNk Y2xrLCBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0J fQo+IC0KPiAtCWludGVsX3N0YXRlLT5jZGNsay5sb2dpY2FsLnZjbyA9IHZjbzsKPiAtCWludGVs X3N0YXRlLT5jZGNsay5sb2dpY2FsLmNkY2xrID0gY2RjbGs7Cj4gLQo+IC0JaWYgKCFpbnRlbF9z dGF0ZS0+YWN0aXZlX2NydGNzKSB7Cj4gLQkJY2RjbGsgPSBza2xfY2FsY19jZGNsaygwLCB2Y28p Owo+ICsJY2RjbGtfc3RhdGUtPmNkY2xrID0gc2tsX2NhbGNfY2RjbGsobWF4X3BpeGNsaywgY2Rj bGtfc3RhdGUtPnZjbyk7Cj4gK30KPiAgCj4gLQkJaW50ZWxfc3RhdGUtPmNkY2xrLmFjdHVhbC52 Y28gPSB2Y287Cj4gLQkJaW50ZWxfc3RhdGUtPmNkY2xrLmFjdHVhbC5jZGNsayA9IGNkY2xrOwo+ IC0JfSBlbHNlIHsKPiAtCQlpbnRlbF9zdGF0ZS0+Y2RjbGsuYWN0dWFsID0KPiAtCQkJaW50ZWxf c3RhdGUtPmNkY2xrLmxvZ2ljYWw7Cj4gLQl9Cj4gK3N0YXRpYyB2b2lkIGJ4dF9jYWxjX2NkY2xr X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCSBpbnQgbWF4 X3BpeGNsaywKPiArCQkJCSBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQo+ ICt7Cj4gKwljZGNsa19zdGF0ZS0+Y2RjbGsgPSBieHRfY2FsY19jZGNsayhtYXhfcGl4Y2xrKTsK PiArCWNkY2xrX3N0YXRlLT52Y28gPSBieHRfZGVfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGtfc3Rh dGUtPmNkY2xrKTsKPiArfQo+ICAKPiAtCXJldHVybiAwOwo+ICtzdGF0aWMgdm9pZCBnbGtfY2Fs Y19jZGNsa19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkg aW50IG1heF9waXhjbGssCj4gKwkJCQkgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19z dGF0ZSkKPiArewo+ICsJY2RjbGtfc3RhdGUtPmNkY2xrID0gZ2xrX2NhbGNfY2RjbGsobWF4X3Bp eGNsayk7Cj4gKwljZGNsa19zdGF0ZS0+dmNvID0gZ2xrX2RlX3BsbF92Y28oZGV2X3ByaXYsIGNk Y2xrX3N0YXRlLT5jZGNsayk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgYnh0X21vZGVzZXRfY2Fs Y19jZGNsayhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK2ludCBpbnRlbF9tb2Rl c2V0X2NhbGNfY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7 Cj4gLQlpbnQgbWF4X3BpeGNsayA9IGludGVsX21heF9waXhlbF9yYXRlKHN0YXRlKTsKPiAtCXN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KPiAtCQl0b19pbnRlbF9hdG9t aWNfc3RhdGUoc3RhdGUpOwo+IC0JaW50IGNkY2xrLCB2Y287Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3Qg aW50ZWxfY2RjbGtfc3RhdGUgKmxvZ2ljYWwgPSAmc3RhdGUtPmNkY2xrLmxvZ2ljYWw7Cj4gKwlz dHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmFjdHVhbCA9ICZzdGF0ZS0+Y2RjbGsuYWN0dWFsOwo+ ICsJaW50IG1heF9waXhjbGsgPSBpbnRlbF9tYXhfcGl4ZWxfcmF0ZSgmc3RhdGUtPmJhc2UpOwo+ ICAKPiAtCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewo+IC0JCWNkY2xrID0gZ2xrX2Nh bGNfY2RjbGsobWF4X3BpeGNsayk7Cj4gLQkJdmNvID0gZ2xrX2RlX3BsbF92Y28oZGV2X3ByaXYs IGNkY2xrKTsKPiAtCX0gZWxzZSB7Cj4gLQkJY2RjbGsgPSBieHRfY2FsY19jZGNsayhtYXhfcGl4 Y2xrKTsKPiAtCQl2Y28gPSBieHRfZGVfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOwo+IC0JfQo+ ICsJLyoKPiArCSAqIEZJWE1FOiBzaG91bGQgYWxzbyBhY2NvdW50IGZvciBwbGFuZSByYXRpbyBv bmNlIDY0YnBwIHBpeGVsIGZvcm1hdHMKPiArCSAqIGFyZSBzdXBwb3J0ZWQuCj4gKwkgKi8KPiAr CWRldl9wcml2LT5kaXNwbGF5LmNhbGNfY2RjbGtfc3RhdGUoZGV2X3ByaXYsIG1heF9waXhjbGss IGxvZ2ljYWwpOwo+ICAKPiAtCWlmIChjZGNsayA+IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSkg ewo+ICsJaWYgKGxvZ2ljYWwtPmNkY2xrID4gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKSB7Cj4g IAkJRFJNX0RFQlVHX0tNUygicmVxdWVzdGVkIGNkY2xrICglZCBrSHopIGV4Y2VlZHMgbWF4ICgl ZCBrSHopXG4iLAo+IC0JCQkgICAgICBjZGNsaywgZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKTsK PiArCQkJICAgICAgbG9naWNhbC0+Y2RjbGssIGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSk7Cj4g IAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfc3RhdGUtPmNkY2xrLmxvZ2lj YWwudmNvID0gdmNvOwo+IC0JaW50ZWxfc3RhdGUtPmNkY2xrLmxvZ2ljYWwuY2RjbGsgPSBjZGNs azsKPiAtCj4gLQlpZiAoIWludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MpIHsKPiAtCQlpZiAoSVNf R0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAtCQkJY2RjbGsgPSBnbGtfY2FsY19jZGNsaygwKTsK PiAtCQkJdmNvID0gZ2xrX2RlX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKPiAtCQl9IGVsc2Ug ewo+IC0JCQljZGNsayA9IGJ4dF9jYWxjX2NkY2xrKDApOwo+IC0JCQl2Y28gPSBieHRfZGVfcGxs X3ZjbyhkZXZfcHJpdiwgY2RjbGspOwo+IC0JCX0KPiAtCj4gLQkJaW50ZWxfc3RhdGUtPmNkY2xr LmFjdHVhbC52Y28gPSB2Y287Cj4gLQkJaW50ZWxfc3RhdGUtPmNkY2xrLmFjdHVhbC5jZGNsayA9 IGNkY2xrOwo+IC0JfSBlbHNlIHsKPiAtCQlpbnRlbF9zdGF0ZS0+Y2RjbGsuYWN0dWFsID0KPiAt CQkJaW50ZWxfc3RhdGUtPmNkY2xrLmxvZ2ljYWw7Cj4gLQl9Cj4gKwlpZiAoIXN0YXRlLT5hY3Rp dmVfY3J0Y3MpCj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuY2FsY19jZGNsa19zdGF0ZShkZXZfcHJp diwgMCwgYWN0dWFsKTsKPiArCWVsc2UKPiArCQkqYWN0dWFsID0gKmxvZ2ljYWw7Cj4gIAo+ICAJ cmV0dXJuIDA7Cj4gIH0KPiBAQCAtMTgyMywyNCArMTc0NCwyMiBAQCB2b2lkIGludGVsX2luaXRf Y2RjbGtfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlp ZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRf Y2RjbGsgPSBjaHZfc2V0X2NkY2xrOwo+IC0JCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2Fs Y19jZGNsayA9Cj4gLQkJCXZsdl9tb2Rlc2V0X2NhbGNfY2RjbGs7Cj4gKwkJZGV2X3ByaXYtPmRp c3BsYXkuY2FsY19jZGNsa19zdGF0ZSA9IHZsdl9jYWxjX2NkY2xrX3N0YXRlOwo+ICAJfSBlbHNl IGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkgewo+ICAJCWRldl9wcml2LT5kaXNwbGF5LnNl dF9jZGNsayA9IHZsdl9zZXRfY2RjbGs7Cj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9j YWxjX2NkY2xrID0KPiAtCQkJdmx2X21vZGVzZXRfY2FsY19jZGNsazsKPiArCQlkZXZfcHJpdi0+ ZGlzcGxheS5jYWxjX2NkY2xrX3N0YXRlID0gdmx2X2NhbGNfY2RjbGtfc3RhdGU7Cj4gIAl9IGVs c2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5z ZXRfY2RjbGsgPSBiZHdfc2V0X2NkY2xrOwo+IC0JCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRf Y2FsY19jZGNsayA9Cj4gLQkJCWJkd19tb2Rlc2V0X2NhbGNfY2RjbGs7Cj4gLQl9IGVsc2UgaWYg KElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuY2FsY19jZGNs a19zdGF0ZSA9IGJkd19jYWxjX2NkY2xrX3N0YXRlOwo+ICsJfSBlbHNlIGlmIChJU19CUk9YVE9O KGRldl9wcml2KSkgewo+ICsJCWRldl9wcml2LT5kaXNwbGF5LnNldF9jZGNsayA9IGJ4dF9zZXRf Y2RjbGs7Cj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuY2FsY19jZGNsa19zdGF0ZSA9IGJ4dF9jYWxj X2NkY2xrX3N0YXRlOwo+ICsJfSBlbHNlIGlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewo+ ICAJCWRldl9wcml2LT5kaXNwbGF5LnNldF9jZGNsayA9IGJ4dF9zZXRfY2RjbGs7Cj4gLQkJZGV2 X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0KPiAtCQkJYnh0X21vZGVzZXRfY2Fs Y19jZGNsazsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5jYWxjX2NkY2xrX3N0YXRlID0gZ2xrX2Nh bGNfY2RjbGtfc3RhdGU7Cj4gIAl9IGVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7Cj4g IAkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0X2NkY2xrID0gc2tsX3NldF9jZGNsazsKPiAtCQlkZXZf cHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPQo+IC0JCQlza2xfbW9kZXNldF9jYWxj X2NkY2xrOwo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmNhbGNfY2RjbGtfc3RhdGUgPSBza2xfY2Fs Y19jZGNsa19zdGF0ZTsKPiAgCX0KPiAgCj4gIAlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGY2ZmViOTMuLjFkMmNiNDkx IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMjQxNCw4ICsx MjQxNCw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9jaGVja3Moc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQo+ICAJICogbW9kZSBzZXQgb24gdGhpcyBjcnRjLiAgRm9yIG90aGVy IGNydGNzIHdlIG5lZWQgdG8gdXNlIHRoZQo+ICAJICogYWRqdXN0ZWRfbW9kZSBiaXRzIGluIHRo ZSBjcnRjIGRpcmVjdGx5Lgo+ICAJICovCj4gLQlpZiAoZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNl dF9jYWxjX2NkY2xrKSB7Cj4gLQkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxj X2NkY2xrKHN0YXRlKTsKPiArCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5jYWxjX2NkY2xrX3N0YXRl KSB7Cj4gKwkJcmV0ID0gaW50ZWxfbW9kZXNldF9jYWxjX2NkY2xrKGludGVsX3N0YXRlKTsKPiAg CQlpZiAocmV0IDwgMCkKPiAgCQkJcmV0dXJuIHJldDsKPiAgCj4gQEAgLTE1NDY4LDcgKzE1NDY4 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIAkJCSAgICBJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19D SEVSUllWSUVXKGRldl9wcml2KSkKPiAgCQkJCXBpeGNsayA9IGNydGNfc3RhdGUtPnBpeGVsX3Jh dGU7Cj4gIAkJCWVsc2UKPiAtCQkJCVdBUk5fT04oZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9j YWxjX2NkY2xrKTsKPiArCQkJCVdBUk5fT04oZGV2X3ByaXYtPmRpc3BsYXkuY2FsY19jZGNsa19z dGF0ZSk7Cj4gIAo+ICAJCQkvKiBwaXhlbCByYXRlIG11c3RuJ3QgZXhjZWVkIDk1JSBvZiBjZGNs ayB3aXRoIElQUyBvbiBCRFcgKi8KPiAgCQkJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgJiYg Y3J0Y19zdGF0ZS0+aXBzX2VuYWJsZWQpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRl eCA4MjFjNTdjLi4zZTExMmZlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAt MTI2MCw2ICsxMjYwLDcgQEAgYm9vbCBpbnRlbF9jZGNsa19zdGF0ZV9jb21wYXJlKGNvbnN0IHN0 cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqYSwKPiAgCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jZGNsa19zdGF0ZSAqYik7Cj4gIHZvaWQgaW50ZWxfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19z dGF0ZSAqY2RjbGtfc3RhdGUpOwo+ICtpbnQgaW50ZWxfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiAgCj4gIC8qIGludGVsX2Rpc3BsYXkuYyAq Lwo+ICBlbnVtIHRyYW5zY29kZXIgaW50ZWxfY3J0Y19wY2hfdHJhbnNjb2RlcihzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0Yyk7Cj4gLS0gCj4gMi43LjQKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwg T1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=