From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/i915: Consolidate max_cdclk_freq check in intel_crtc_compute_min_cdclk() Date: Wed, 12 Jul 2017 13:18:11 +0300 Message-ID: <20170712101810.GF12629@intel.com> References: <20170710193347.8734-1-ville.syrjala@linux.intel.com> <20170710193347.8734-2-ville.syrjala@linux.intel.com> <1499805685.18085.11.camel@dk-H97M-D3H> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9CB466E3E9 for ; Wed, 12 Jul 2017 10:18:19 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1499805685.18085.11.camel@dk-H97M-D3H> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Pandiyan, Dhinakaran" Cc: "intel-gfx@lists.freedesktop.org" , "Zanoni, Paulo R" , "Vivi, Rodrigo" List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdWwgMTEsIDIwMTcgYXQgMDg6MjE6MzJQTSArMDAwMCwgUGFuZGl5YW4sIERoaW5h a2FyYW4gd3JvdGU6Cj4gCj4gCj4gCj4gT24gTW9uLCAyMDE3LTA3LTEwIGF0IDIyOjMzICswMzAw LCB2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbSB3cm90ZToKPiA+IEZyb206IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiAKPiA+IEN1cnJlbnRs eSB0aGUgLm1vZGVzZXRfY2FsY19jZGNsaygpIGhvb2tzIGNoZWNrIHRoZSBmaW5hbCBjZGNsayB2 YWx1ZQo+ID4gYWdhaW5zdCB0aGUgbWF4IGFsbG93ZWQuIFRoYXQncyBub3QgcmVhbGx5IHN1ZmZp Y2llbnQgc2luY2UgdGhlIGxvdwo+ID4gbGV2ZWwgY2FsY19jZGNsaygpIGZ1bmN0aW9ucyBlZmZl Y3RpdmVseSBjbGFtcCB0aGUgbWluaW11bSByZXF1aXJlZAo+ID4gY2RjbGsgdG8gdGhlIG1heCBz dXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLiBIZW5jZSBpZiB0aGUgbWluaW11bQo+ID4gcmVxdWly ZWQgZXhjZWVkcyB0aGUgcGxhdGZvcm1zIGNhcGFiaWxpdGllcyB3ZSdkIGtlZXAgZ29pbmcgYW55 d2F5Cj4gPiB1c2luZyB0aGUgbWF4IGNkY2xrIGZyZXF1ZW5jeS4KPiA+IAo+ID4gVG8gZml4IHRo YXQgbGV0J3MgbW92ZSB0aGUgY2hlY2sgZWFybGllciBpbnRvCj4gPiBpbnRlbF9jcnRjX2NvbXB1 dGVfbWluX2NkY2xrKCkgYW5kIHdlJ2xsIGNoZWNrIHRoZSBtaW5pbXVtIHJlcXVpcmVkCj4gPiBj ZGNsayBvZiB0aGUgcGlwZSBhZ2FpbnN0IHRoZSBtYXhpbXVtIHN1cHBvcnRlZCBieSB0aGUgcGxh dGZvcm0uCj4gPiAKPiAKPiBJIHN1cHBvc2UgdGhpcyBzaG91bGQgc2F2ZSBzb21lIHBvd2VyIGlu IHRoZSBjYXNlIHdoZXJlIG9uZSBvZiB0aGUKPiBDUlRDJ3MgcGl4ZWwgcmF0ZSBleGNlZWRzIHBs YXRmb3JtIGNhcGFiaWxpdGllcy4KClJhdGhlciBpdCBrZWVwcyB0aGUgZGlzcGxheSB3b3JraW5n LiBJZiB0aGUgY2RjbGsgY2FuJ3Qgc3VwcGx5IGVub3VnaApwaXhlbHMgdG8gc2F0aXNmeSB0aGUg cG9ydCdzIGRlbWFuZHMgdGhlbiBpbiB0aGUgYmVzdCBjYXNlIHdlIGdldApjb25zdGFudCB1bmRl cnJ1bnMsIGluIHRoZSB3b3JzdCBjYXNlIHRoZSBib3ggcHJvYmFibHkgaGFyZCBoYW5ncy4KCj4g QW5kIGZhaWxpbmcgdGhlCj4gYXRvbWljX2NoZWNrIGluc3RlYWQgb2YgZ29pbmcgd2l0aCBtYXhf Y2RjbGsgd2lsbCBoZWxwIHRoZSB1c2Vyc3BhY2UgdHJ5Cj4gYSBsb3dlciBtb2RlLiBJcyB0aGF0 IHRoZSBpZGVhPwoKV2VsbCwgaW4gdGhlb3J5IHlvdSBzaG91bGRuJ3QgZXZlbiBnZXQgdGhpcyBm YXIgYXMgd2Ugc2hvdWxkIGhhdmUKcmVqZWN0ZWQgdGhlIG1vZGUgZWFybGllci4gQnV0IEkgZmln dXJlZCB0aGVyZSdzIG5vIGhhcm0gaW4ga2VlcGluZyB0aGUKY2hlY2tzIHNpbmNlIHdlIGRvIGFk anVzdCB0aGUgcmVxdWlyZWQgY2RjZGxrIGhlcmUgY29tcGFyZWQgdG8gZWFybGllcgplc3RpbWF0 ZXMgd2UgbWlnaHQgaGF2ZSBtYWRlIHB1cmVseSBvbiB0aGUgcGl4ZWwgcmF0ZS4KCj4gCj4gTW92 aW5nIHRoZSBjaGVja3MgbWFrZXMgc2Vuc2UgdG8gbWUgYmVjYXVzZSB0aGF0IHNlZW1zIGxpa2Ug dGhlIG9yaWdpbmFsCj4gaW50ZW50aW9uIGFueXdheSwgYnV0IEkgdGhpbmsgaXQncyBhIGdvb2Qg aWRlYSB0byBnZXQgc29tZW9uZSBlbHNlIHRvCj4gdGFrZSBhIGxvb2sgdG9vLgo+IAo+IFJldmll d2VkLWJ5OiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGludGVsLmNv bT4KPiAKPiA+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiA+ IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPiBDYzogRGhpbmFr YXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4gPiBDYzogTWFh cnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiA+IFNp Z25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jICAgfCA5 NiArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgNSArLQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgNDgg aW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY2RjbGsuYwo+ID4gaW5kZXggNTBmMTUzZGJlYTE0Li42MDM5NTBmMWI4N2YgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4gPiBAQCAtMTc4OSw2ICsxNzg5LDEyIEBA IGludCBpbnRlbF9jcnRjX2NvbXB1dGVfbWluX2NkY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gIAlpZiAoY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvICYmIElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiA+ICAJCW1pbl9jZGNsayA9IG1heCgyICogOTYwMDAs IG1pbl9jZGNsayk7Cj4gPiAgCj4gPiArCWlmIChtaW5fY2RjbGsgPiBkZXZfcHJpdi0+bWF4X2Nk Y2xrX2ZyZXEpIHsKPiA+ICsJCURSTV9ERUJVR19LTVMoInJlcXVpcmVkIGNkY2xrICglZCBrSHop IGV4Y2VlZHMgbWF4ICglZCBrSHopXG4iLAo+ID4gKwkJCSAgICAgIG1pbl9jZGNsaywgZGV2X3By aXYtPm1heF9jZGNsa19mcmVxKTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwl9Cj4gPiAr Cj4gPiAgCXJldHVybiBtaW5fY2RjbGs7Cj4gPiAgfQo+ID4gIAo+ID4gQEAgLTE3OTgsMTYgKzE4 MDQsMjEgQEAgc3RhdGljIGludCBpbnRlbF9jb21wdXRlX21pbl9jZGNsayhzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwo+ ID4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiA+IC0JaW50IG1pbl9j ZGNsayA9IDAsIGk7Cj4gPiArCWludCBtaW5fY2RjbGssIGk7Cj4gPiAgCWVudW0gcGlwZSBwaXBl Owo+ID4gIAo+ID4gIAltZW1jcHkoaW50ZWxfc3RhdGUtPm1pbl9jZGNsaywgZGV2X3ByaXYtPm1p bl9jZGNsaywKPiA+ICAJICAgICAgIHNpemVvZihpbnRlbF9zdGF0ZS0+bWluX2NkY2xrKSk7Cj4g PiAgCj4gPiAtCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKGludGVsX3N0YXRlLCBj cnRjLCBjcnRjX3N0YXRlLCBpKQo+ID4gLQkJaW50ZWxfc3RhdGUtPm1pbl9jZGNsa1tpXSA9Cj4g PiAtCQkJaW50ZWxfY3J0Y19jb21wdXRlX21pbl9jZGNsayhjcnRjX3N0YXRlKTsKPiA+ICsJZm9y X2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoaW50ZWxfc3RhdGUsIGNydGMsIGNydGNfc3Rh dGUsIGkpIHsKPiA+ICsJCW1pbl9jZGNsayA9IGludGVsX2NydGNfY29tcHV0ZV9taW5fY2RjbGso Y3J0Y19zdGF0ZSk7Cj4gPiArCQlpZiAobWluX2NkY2xrIDwgMCkKPiA+ICsJCQlyZXR1cm4gbWlu X2NkY2xrOwo+ID4gKwo+ID4gKwkJaW50ZWxfc3RhdGUtPm1pbl9jZGNsa1tpXSA9IG1pbl9jZGNs azsKPiA+ICsJfQo+ID4gIAo+ID4gKwltaW5fY2RjbGsgPSAwOwo+ID4gIAlmb3JfZWFjaF9waXBl KGRldl9wcml2LCBwaXBlKQo+ID4gIAkJbWluX2NkY2xrID0gbWF4KGludGVsX3N0YXRlLT5taW5f Y2RjbGtbcGlwZV0sIG1pbl9jZGNsayk7Cj4gPiAgCj4gPiBAQCAtMTgxNywxOCArMTgyOCwxNCBA QCBzdGF0aWMgaW50IGludGVsX2NvbXB1dGVfbWluX2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPiA+ICBzdGF0aWMgaW50IHZsdl9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKPiA+IC0JaW50IG1pbl9jZGNs ayA9IGludGVsX2NvbXB1dGVfbWluX2NkY2xrKHN0YXRlKTsKPiA+IC0Jc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQo+ID4gLQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0 YXRlKTsKPiA+IC0JaW50IGNkY2xrOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpp bnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4gPiArCWludCBtaW5f Y2RjbGssIGNkY2xrOwo+ID4gIAo+ID4gLQljZGNsayA9IHZsdl9jYWxjX2NkY2xrKGRldl9wcml2 LCBtaW5fY2RjbGspOwo+ID4gKwltaW5fY2RjbGsgPSBpbnRlbF9jb21wdXRlX21pbl9jZGNsayhz dGF0ZSk7Cj4gPiArCWlmIChtaW5fY2RjbGsgPCAwKQo+ID4gKwkJcmV0dXJuIG1pbl9jZGNsazsK PiA+ICAKPiA+IC0JaWYgKGNkY2xrID4gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKSB7Cj4gPiAt CQlEUk1fREVCVUdfS01TKCJyZXF1ZXN0ZWQgY2RjbGsgKCVkIGtIeikgZXhjZWVkcyBtYXggKCVk IGtIeilcbiIsCj4gPiAtCQkJICAgICAgY2RjbGssIGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSk7 Cj4gPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiA+IC0JfQo+ID4gKwljZGNsayA9IHZsdl9jYWxjX2Nk Y2xrKGRldl9wcml2LCBtaW5fY2RjbGspOwo+ID4gIAo+ID4gIAlpbnRlbF9zdGF0ZS0+Y2RjbGsu bG9naWNhbC5jZGNsayA9IGNkY2xrOwo+ID4gIAo+ID4gQEAgLTE4NDYsMTAgKzE4NTMsMTIgQEAg c3RhdGljIGludCB2bHZfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkKPiA+ICAKPiA+ICBzdGF0aWMgaW50IGJkd19tb2Rlc2V0X2NhbGNfY2RjbGsoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gIHsKPiA+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKPiA+ICAJc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3Rh dGUpOwo+ID4gLQlpbnQgbWluX2NkY2xrID0gaW50ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RhdGUp Owo+ID4gLQlpbnQgY2RjbGs7Cj4gPiArCWludCBtaW5fY2RjbGssIGNkY2xrOwo+ID4gKwo+ID4g KwltaW5fY2RjbGsgPSBpbnRlbF9jb21wdXRlX21pbl9jZGNsayhzdGF0ZSk7Cj4gPiArCWlmICht aW5fY2RjbGsgPCAwKQo+ID4gKwkJcmV0dXJuIG1pbl9jZGNsazsKPiA+ICAKPiA+ICAJLyoKPiA+ ICAJICogRklYTUUgc2hvdWxkIGFsc28gYWNjb3VudCBmb3IgcGxhbmUgcmF0aW8KPiA+IEBAIC0x ODU3LDEyICsxODY2LDYgQEAgc3RhdGljIGludCBiZHdfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ICAJICovCj4gPiAgCWNkY2xrID0gYmR3X2Nh bGNfY2RjbGsobWluX2NkY2xrKTsKPiA+ICAKPiA+IC0JaWYgKGNkY2xrID4gZGV2X3ByaXYtPm1h eF9jZGNsa19mcmVxKSB7Cj4gPiAtCQlEUk1fREVCVUdfS01TKCJyZXF1ZXN0ZWQgY2RjbGsgKCVk IGtIeikgZXhjZWVkcyBtYXggKCVkIGtIeilcbiIsCj4gPiAtCQkJICAgICAgY2RjbGssIGRldl9w cml2LT5tYXhfY2RjbGtfZnJlcSk7Cj4gPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiA+IC0JfQo+ID4g LQo+ID4gIAlpbnRlbF9zdGF0ZS0+Y2RjbGsubG9naWNhbC5jZGNsayA9IGNkY2xrOwo+ID4gIAo+ ID4gIAlpZiAoIWludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MpIHsKPiA+IEBAIC0xODc5LDEwICsx ODgyLDEzIEBAIHN0YXRpYyBpbnQgYmR3X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCj4gPiAgCj4gPiAgc3RhdGljIGludCBza2xfbW9kZXNldF9jYWxj X2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ICB7Cj4gPiAtCXN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRl KHN0YXRlKTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShzdGF0ZS0+ZGV2KTsKPiA+IC0JaW50IG1pbl9jZGNsayA9IGludGVsX2NvbXB1dGVfbWluX2Nk Y2xrKHN0YXRlKTsKPiA+IC0JaW50IGNkY2xrLCB2Y287Cj4gPiArCXN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiA+ ICsJaW50IG1pbl9jZGNsaywgY2RjbGssIHZjbzsKPiA+ICsKPiA+ICsJbWluX2NkY2xrID0gaW50 ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RhdGUpOwo+ID4gKwlpZiAobWluX2NkY2xrIDwgMCkKPiA+ ICsJCXJldHVybiBtaW5fY2RjbGs7Cj4gPiAgCj4gPiAgCXZjbyA9IGludGVsX3N0YXRlLT5jZGNs ay5sb2dpY2FsLnZjbzsKPiA+ICAJaWYgKCF2Y28pCj4gPiBAQCAtMTg5NCwxMiArMTkwMCw2IEBA IHN0YXRpYyBpbnQgc2tsX21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpCj4gPiAgCSAqLwo+ID4gIAljZGNsayA9IHNrbF9jYWxjX2NkY2xrKG1pbl9jZGNs aywgdmNvKTsKPiA+ICAKPiA+IC0JaWYgKGNkY2xrID4gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVx KSB7Cj4gPiAtCQlEUk1fREVCVUdfS01TKCJyZXF1ZXN0ZWQgY2RjbGsgKCVkIGtIeikgZXhjZWVk cyBtYXggKCVkIGtIeilcbiIsCj4gPiAtCQkJICAgICAgY2RjbGssIGRldl9wcml2LT5tYXhfY2Rj bGtfZnJlcSk7Cj4gPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiA+IC0JfQo+ID4gLQo+ID4gIAlpbnRl bF9zdGF0ZS0+Y2RjbGsubG9naWNhbC52Y28gPSB2Y287Cj4gPiAgCWludGVsX3N0YXRlLT5jZGNs ay5sb2dpY2FsLmNkY2xrID0gY2RjbGs7Cj4gPiAgCj4gPiBAQCAtMTkxOSwxMCArMTkxOSwxMiBA QCBzdGF0aWMgaW50IHNrbF9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ID4gIHN0YXRpYyBpbnQgYnh0X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwo+ID4gLQlpbnQgbWluX2NkY2xr ID0gaW50ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RhdGUpOwo+ID4gLQlzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICppbnRlbF9zdGF0ZSA9Cj4gPiAtCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoc3Rh dGUpOwo+ID4gLQlpbnQgY2RjbGssIHZjbzsKPiA+ICsJc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ID4gKwlpbnQg bWluX2NkY2xrLCBjZGNsaywgdmNvOwo+ID4gKwo+ID4gKwltaW5fY2RjbGsgPSBpbnRlbF9jb21w dXRlX21pbl9jZGNsayhzdGF0ZSk7Cj4gPiArCWlmIChtaW5fY2RjbGsgPCAwKQo+ID4gKwkJcmV0 dXJuIG1pbl9jZGNsazsKPiA+ICAKPiA+ICAJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7 Cj4gPiAgCQljZGNsayA9IGdsa19jYWxjX2NkY2xrKG1pbl9jZGNsayk7Cj4gPiBAQCAtMTkzMiwx MiArMTkzNCw2IEBAIHN0YXRpYyBpbnQgYnh0X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiAgCQl2Y28gPSBieHRfZGVfcGxsX3ZjbyhkZXZfcHJp diwgY2RjbGspOwo+ID4gIAl9Cj4gPiAgCj4gPiAtCWlmIChjZGNsayA+IGRldl9wcml2LT5tYXhf Y2RjbGtfZnJlcSkgewo+ID4gLQkJRFJNX0RFQlVHX0tNUygicmVxdWVzdGVkIGNkY2xrICglZCBr SHopIGV4Y2VlZHMgbWF4ICglZCBrSHopXG4iLAo+ID4gLQkJCSAgICAgIGNkY2xrLCBkZXZfcHJp di0+bWF4X2NkY2xrX2ZyZXEpOwo+ID4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAtCX0KPiA+IC0K PiA+ICAJaW50ZWxfc3RhdGUtPmNkY2xrLmxvZ2ljYWwudmNvID0gdmNvOwo+ID4gIAlpbnRlbF9z dGF0ZS0+Y2RjbGsubG9naWNhbC5jZGNsayA9IGNkY2xrOwo+ID4gIAo+ID4gQEAgLTE5NjMsMjAg KzE5NTksMTYgQEAgc3RhdGljIGludCBieHRfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ICBzdGF0aWMgaW50IGNubF9tb2Rlc2V0X2NhbGNfY2Rj bGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKPiA+IC0Jc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQo+ID4gLQkJdG9faW50ZWxfYXRv bWljX3N0YXRlKHN0YXRlKTsKPiA+IC0JaW50IG1pbl9jZGNsayA9IGludGVsX2NvbXB1dGVfbWlu X2NkY2xrKHN0YXRlKTsKPiA+IC0JaW50IGNkY2xrLCB2Y287Cj4gPiArCXN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsK PiA+ICsJaW50IG1pbl9jZGNsaywgY2RjbGssIHZjbzsKPiA+ICsKPiA+ICsJbWluX2NkY2xrID0g aW50ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RhdGUpOwo+ID4gKwlpZiAobWluX2NkY2xrIDwgMCkK PiA+ICsJCXJldHVybiBtaW5fY2RjbGs7Cj4gPiAgCj4gPiAgCWNkY2xrID0gY25sX2NhbGNfY2Rj bGsobWluX2NkY2xrKTsKPiA+ICAJdmNvID0gY25sX2NkY2xrX3BsbF92Y28oZGV2X3ByaXYsIGNk Y2xrKTsKPiA+ICAKPiA+IC0JaWYgKGNkY2xrID4gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKSB7 Cj4gPiAtCQlEUk1fREVCVUdfS01TKCJyZXF1ZXN0ZWQgY2RjbGsgKCVkIGtIeikgZXhjZWVkcyBt YXggKCVkIGtIeilcbiIsCj4gPiAtCQkJICAgICAgY2RjbGssIGRldl9wcml2LT5tYXhfY2RjbGtf ZnJlcSk7Cj4gPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiA+IC0JfQo+ID4gLQo+ID4gIAlpbnRlbF9z dGF0ZS0+Y2RjbGsubG9naWNhbC52Y28gPSB2Y287Cj4gPiAgCWludGVsX3N0YXRlLT5jZGNsay5s b2dpY2FsLmNkY2xrID0gY2RjbGs7Cj4gPiAgCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gPiBpbmRleCBiNDc1MzVmNWQ5NWQuLjFjYWYwZWY4MmUzNiAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBAQCAtMTU1OTAsOCArMTU1OTAsMTEg QEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gPiAgCj4gPiAgCQkJaW50ZWxfY3J0Y19jb21wdXRlX3BpeGVsX3JhdGUo Y3J0Y19zdGF0ZSk7Cj4gPiAgCj4gPiAtCQkJaWYgKGRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRf Y2FsY19jZGNsaykKPiA+ICsJCQlpZiAoZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2Nk Y2xrKSB7Cj4gPiAgCQkJCW1pbl9jZGNsayA9IGludGVsX2NydGNfY29tcHV0ZV9taW5fY2RjbGso Y3J0Y19zdGF0ZSk7Cj4gPiArCQkJCWlmIChXQVJOX09OKG1pbl9jZGNsayA8IDApKQo+ID4gKwkJ CQkJbWluX2NkY2xrID0gMDsKPiA+ICsJCQl9Cj4gPiAgCj4gPiAgCQkJZHJtX2NhbGNfdGltZXN0 YW1waW5nX2NvbnN0YW50cygmY3J0Yy0+YmFzZSwKPiA+ICAJCQkJCQkJJmNydGNfc3RhdGUtPmJh c2UuYWRqdXN0ZWRfbW9kZSk7CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK