From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 1/2] drm/i915: Track minimum acceptable cdclk instead of "minimum dotclock" Date: Tue, 11 Jul 2017 16:00:35 +0300 Message-ID: <20170711130035.GT12629@intel.com> References: <20170710193347.8734-1-ville.syrjala@linux.intel.com> <2614134.ykFHueuXXI@dk> 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 ESMTPS id 3561E6E021 for ; Tue, 11 Jul 2017 13:00:39 +0000 (UTC) Content-Disposition: inline In-Reply-To: <2614134.ykFHueuXXI@dk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dhinakaran Pandiyan Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi , Dhinakaran Pandiyan , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdWwgMTEsIDIwMTcgYXQgMDI6NDc6NDJBTSAtMDcwMCwgRGhpbmFrYXJhbiBQYW5k aXlhbiB3cm90ZToKPiBPbiBNb25kYXksIEp1bHkgMTAsIDIwMTcgMTA6MzM6NDYgUE0gUERUIHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tIHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOk bMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IAo+ID4gTWFrZSB0aGUgbWlu X3BpeGNsayB0aGluZyBsZXNzIGNvbmZ1c2luZyBieSBjaGFuZ2luZyBpdCB0byB0cmFjawo+ID4g dGhlIG1pbmltdW0gYWNjZXB0YWJsZSBjZGNsayBmcmVxdWVuY3kgaW5zdGVhZC4gVGhpcyBtZWFu cyBtb3ZpbmcKPiA+IHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgZ3VhcmRiYW5kcyB0byBhIHNsaWdo dGx5IGhpZ2hlciBsZXZlbCBmcm9tCj4gPiB0aGUgbG93IGxldmVsIHBsYXRmb3JtIHNwZWNpZmlj IGNhbGNfY2RjbGsoKSBmdW5jdGlvbnMuCj4gPiAKPiA+IFRoZSBpbW1lZGlhdGUgYmVuZWZpdCBp cyBlbGltaW5hdGlvbiBvZiB0aGUgY29uZnVzaW5nIDJ4IGZhY3RvcnMKPiA+IG9uIEdMSy9DTkwr IGluIHRoZSBhdWRpbyB3b3JrYXJvdW5kcyAod2hpY2ggc3RlbXMgZnJvbSB0aGUgZmFjdAo+ID4g dGhhdCB0aGUgcGlwZXMgcHJvZHVjZSB0d28gcGl4ZWxzIHBlciBjbG9jaykuCj4gPiAKPiA+IHYy OiBLZWVwIGNkY2xrIGhpZ2hlciBvbiBDTkwgdG8gd29ya2Fyb3VuZCBtaXNzaW5nIERESSBjbG9j ayB2b2x0YWdlCj4gPiBoYW5kbGluZyB2MzogU3F1YXNoIHdpdGggdGhlIENOTCBjZGNsayBsaW1p dHMgcGF0Y2ggKERLKQo+ID4gCj4gCj4gTG9va3MgZ29vZCB0byBtZSwgSSBvbmx5IGhhdmUgc29t ZSBiaWtlc2hlZHMgYW5kIG5pdHBpY2tzIGJlbG93LiBXaWxsIGxlYXZlIGl0IAo+IHRvIHlvdSB0 byBkZWNpZGUgaWYgeW91IHdhbnQgdG8gYWRkcmVzcyB0aGVtLgo+IAo+IFJldmlld2VkLWJ5OiBE aGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGludGVsLmNvbT4KPiAKPiA+ IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiA+IENjOiBSb2Ry aWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPiBDYzogRGhpbmFrYXJhbiBQYW5k aXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4gPiBDYzogTWFhcnRlbiBMYW5r aG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYt Ynk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiAt LS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgMTIgKystCj4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYyAgIHwgMjAyCj4gPiArKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLSBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgfCAKPiA+IDIxICsrLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgICAgfCAgIDQgKy0KPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRpb25zKCsp LCAxMTQgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggaW5k ZXggODFjZDIxZWNmYTdkLi5jODAxNzY0MjRkODQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gPiBAQCAtNTYzLDYgKzU2MywxNSBAQCBzdHJ1Y3QgaTkxNV9ob3RwbHVnIHsKPiA+ ICAJICAgICAoX19pKSsrKSBcCj4gPiAgCQlmb3JfZWFjaF9pZiAocGxhbmVfc3RhdGUpCj4gPiAK PiA+ICsjZGVmaW5lIGZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKF9fc3RhdGUsIGNy dGMsIG5ld19jcnRjX3N0YXRlLAo+ID4gX19pKSBcICsJZm9yICgoX19pKSA9IDA7IFwKPiA+ICsJ ICAgICAoX19pKSA8IChfX3N0YXRlKS0+YmFzZS5kZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjICYm IFwKPiA+ICsJCSAgICAgKChjcnRjKSA9IHRvX2ludGVsX2NydGMoKF9fc3RhdGUpLT5iYXNlLmNy dGNzW19faV0ucHRyKSwgXAo+ID4gKwkJICAgICAgKG5ld19jcnRjX3N0YXRlKSA9Cj4gPiB0b19p bnRlbF9jcnRjX3N0YXRlKChfX3N0YXRlKS0+YmFzZS5jcnRjc1tfX2ldLm5ld19zdGF0ZSksIDEp OyBcICsJICAgIAo+ID4gKF9faSkrKykgXAo+ID4gKwkJZm9yX2VhY2hfaWYgKGNydGMpCj4gPiAr Cj4gPiArCj4gCj4gSSBhbSBub3Qgc3VyZSBob3cgdXNlZnVsIGFkZGluZyB0aGlzIG1hY3JvIGlz LiBUaGUgbG9vcCBsb29rcyBjb25jaXNlIHdpdGggCj4gdGhpcyBtYWNybywgYnV0IHdlIGVuZCB1 cCBkb2luZyB1bm5lY2Vzc2FyeSB0b19pbnRlbF9jcnRjKCkgY29udmVyc2lvbnMgaW4gdGhlIAo+ IGxvb3AuCgpUaG9zZSBhcmUgZnJlZS4KCj4gTG9va3MgbGlrZSBhbGwgd2UgbmVlZCBpcyBhIHRv X2ludGVsX2NydGNfc3RhdGUoKS4KCkkgd2FudCB0byBtb3ZlIGF3YXkgZnJvbSB0aGUgZHJtXyB0 eXBlcyBhcyBtdWNoIGFzIHBvc3NpYmxlLiBJZGVhbGx5CkknZCByYXRoZXIgbm90IHNlZSB0aG9z ZSBpbiB0aGUgaTkxNSBjb2RlIGF0IGFsbCwgYnV0IHRoYXQncyBzbGlnaHRseQp1bnJlYWxpc3Rp YyB0aGFua3MgdG8gdGhlIGZ1bmN0aW9uIHBvaW50ZXJzIHdlIGhvb2sgaW50byB0aGUKY29yZS9o ZWxwZXJzLiBJJ3ZlIGJlZW4gcG9uZGVyaW5nIGlmIHdlIGNvdWxkIGF1dG9tYWdpY2FsbHkgZ2Vu ZXJhdGUKc29tZSBraW5kIG9mIHdyYXBwZXJzIGZvciB0aG9zZSB0aGF0IHdvdWxkIGdpdmUgdXMg dGhlIGludGVsXyB0eXBlcwpkaXJlY3RseSwgYnV0IG5vdCBzdXJlIGlmIHRoYXQncyBkb2FibGUu Cgo+IAo+ID4gIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+ID4gIHN0cnVjdCBpOTE1X21tX3N0 cnVjdDsKPiA+ICBzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0Owo+ID4gQEAgLTIyNjgsNyArMjI3Nyw4 IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiA+ICAJc3RydWN0IG11dGV4IGRwbGxfbG9j azsKPiA+IAo+ID4gIAl1bnNpZ25lZCBpbnQgYWN0aXZlX2NydGNzOwo+ID4gLQl1bnNpZ25lZCBp bnQgbWluX3BpeGNsa1tJOTE1X01BWF9QSVBFU107Cj4gPiArCS8qIG1pbmltdW0gYWNjZXB0YWJs ZSBjZGNsayBmb3IgZWFjaCBwaXBlICovCj4gPiArCWludCBtaW5fY2RjbGtbSTkxNV9NQVhfUElQ RVNdOwo+ID4gCj4gPiAgCWludCBkcGlvX3BoeV9pb3NmX3BvcnRbSTkxNV9OVU1fUEhZU19WTFZd Owo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsu Ywo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jIGluZGV4IDEyNDFlNTg5 MWIyOS4uNTBmMTUzZGJlYTE0Cj4gPiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NkY2xrLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nk Y2xrLmMKPiA+IEBAIC00MTcsMjQgKzQxNywyMSBAQCBzdGF0aWMgdm9pZCBoc3dfZ2V0X2NkY2xr KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsIGNkY2xrX3N0YXRlLT5jZGNs ayA9IDU0MDAwMDsKPiA+ICB9Cj4gPiAKPiA+IC1zdGF0aWMgaW50IHZsdl9jYWxjX2NkY2xrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IC0JCQkgIGludCBtYXhfcGl4Y2xr KQo+ID4gK3N0YXRpYyBpbnQgdmx2X2NhbGNfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBpbnQgbWluX2NkY2xrKQo+ID4gewo+ID4gIAlpbnQgZnJlcV8zMjAgPSAoZGV2 X3ByaXYtPmhwbGxfZnJlcSA8PCAgMSkgJSAzMjAwMDAgIT0gMCA/Cj4gPiAgCQkzMzMzMzMgOiAz MjAwMDA7Cj4gPiAtCWludCBsaW1pdCA9IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpID8gOTUgOiA5 MDsKPiA+IAo+ID4gIAkvKgo+ID4gIAkgKiBXZSBzZWVtIHRvIGdldCBhbiB1bnN0YWJsZSBvciBz b2xpZCBjb2xvciBwaWN0dXJlIGF0IDIwME1Iei4KPiA+ICAJICogTm90IHN1cmUgd2hhdCdzIHdy b25nLiBGb3Igbm93IHVzZSAyMDBNSHogb25seSB3aGVuIGFsbCBwaXBlcwo+ID4gIAkgKiBhcmUg b2ZmLgo+ID4gIAkgKi8KPiA+IC0JaWYgKCFJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJgo+ID4g LQkgICAgbWF4X3BpeGNsayA+IGZyZXFfMzIwKmxpbWl0LzEwMCkKPiA+ICsJaWYgKElTX1ZBTExF WVZJRVcoZGV2X3ByaXYpICYmIG1pbl9jZGNsayA+IGZyZXFfMzIwKQo+ID4gIAkJcmV0dXJuIDQw MDAwMDsKPiA+IC0JZWxzZSBpZiAobWF4X3BpeGNsayA+IDI2NjY2NypsaW1pdC8xMDApCj4gPiAr CWVsc2UgaWYgKG1pbl9jZGNsayA+IDI2NjY2NykKPiA+ICAJCXJldHVybiBmcmVxXzMyMDsKPiA+ IC0JZWxzZSBpZiAobWF4X3BpeGNsayA+IDApCj4gPiArCWVsc2UgaWYgKG1pbl9jZGNsayA+IDAp Cj4gPiAgCQlyZXR1cm4gMjY2NjY3Owo+ID4gIAllbHNlCj4gPiAgCQlyZXR1cm4gMjAwMDAwOwo+ ID4gQEAgLTYxMiwxMyArNjA5LDEzIEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdiwgaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQo ZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QSVBFX0EpOwo+ID4gIH0KPiA+IAo+ID4gLXN0YXRpYyBp bnQgYmR3X2NhbGNfY2RjbGsoaW50IG1heF9waXhjbGspCj4gPiArc3RhdGljIGludCBiZHdfY2Fs Y19jZGNsayhpbnQgbWluX2NkY2xrKQo+ID4gIHsKPiA+IC0JaWYgKG1heF9waXhjbGsgPiA1NDAw MDApCj4gPiArCWlmIChtaW5fY2RjbGsgPiA1NDAwMDApCj4gPiAgCQlyZXR1cm4gNjc1MDAwOwo+ ID4gLQllbHNlIGlmIChtYXhfcGl4Y2xrID4gNDUwMDAwKQo+ID4gKwllbHNlIGlmIChtaW5fY2Rj bGsgPiA0NTAwMDApCj4gPiAgCQlyZXR1cm4gNTQwMDAwOwo+ID4gLQllbHNlIGlmIChtYXhfcGl4 Y2xrID4gMzM3NTAwKQo+ID4gKwllbHNlIGlmIChtaW5fY2RjbGsgPiAzMzc1MDApCj4gPiAgCQly ZXR1cm4gNDUwMDAwOwo+ID4gIAllbHNlCj4gPiAgCQlyZXR1cm4gMzM3NTAwOwo+ID4gQEAgLTcy NCwyMyArNzIxLDIzIEBAIHN0YXRpYyB2b2lkIGJkd19zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUKPiA+ICpkZXZfcHJpdiwgY2RjbGssIGRldl9wcml2LT5jZGNsay5ody5jZGNsayk7 Cj4gPiAgfQo+ID4gCj4gPiAtc3RhdGljIGludCBza2xfY2FsY19jZGNsayhpbnQgbWF4X3BpeGNs aywgaW50IHZjbykKPiA+ICtzdGF0aWMgaW50IHNrbF9jYWxjX2NkY2xrKGludCBtaW5fY2RjbGss IGludCB2Y28pCj4gPiAgewo+ID4gIAlpZiAodmNvID09IDg2NDAwMDApIHsKPiA+IC0JCWlmICht YXhfcGl4Y2xrID4gNTQwMDAwKQo+ID4gKwkJaWYgKG1pbl9jZGNsayA+IDU0MDAwMCkKPiA+ICAJ CQlyZXR1cm4gNjE3MTQzOwo+ID4gLQkJZWxzZSBpZiAobWF4X3BpeGNsayA+IDQzMjAwMCkKPiA+ ICsJCWVsc2UgaWYgKG1pbl9jZGNsayA+IDQzMjAwMCkKPiA+ICAJCQlyZXR1cm4gNTQwMDAwOwo+ ID4gLQkJZWxzZSBpZiAobWF4X3BpeGNsayA+IDMwODU3MSkKPiA+ICsJCWVsc2UgaWYgKG1pbl9j ZGNsayA+IDMwODU3MSkKPiA+ICAJCQlyZXR1cm4gNDMyMDAwOwo+ID4gIAkJZWxzZQo+ID4gIAkJ CXJldHVybiAzMDg1NzE7Cj4gPiAgCX0gZWxzZSB7Cj4gPiAtCQlpZiAobWF4X3BpeGNsayA+IDU0 MDAwMCkKPiA+ICsJCWlmIChtaW5fY2RjbGsgPiA1NDAwMDApCj4gPiAgCQkJcmV0dXJuIDY3NTAw MDsKPiA+IC0JCWVsc2UgaWYgKG1heF9waXhjbGsgPiA0NTAwMDApCj4gPiArCQllbHNlIGlmICht aW5fY2RjbGsgPiA0NTAwMDApCj4gPiAgCQkJcmV0dXJuIDU0MDAwMDsKPiA+IC0JCWVsc2UgaWYg KG1heF9waXhjbGsgPiAzMzc1MDApCj4gPiArCQllbHNlIGlmIChtaW5fY2RjbGsgPiAzMzc1MDAp Cj4gPiAgCQkJcmV0dXJuIDQ1MDAwMDsKPiA+ICAJCWVsc2UKPiA+ICAJCQlyZXR1cm4gMzM3NTAw Owo+ID4gQEAgLTEwNzUsMzEgKzEwNzIsMjUgQEAgdm9pZCBza2xfdW5pbml0X2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYpIHNrbF9zZXRfY2RjbGsoZGV2X3ByaXYs ICZjZGNsa19zdGF0ZSk7Cj4gPiAgfQo+ID4gCj4gPiAtc3RhdGljIGludCBieHRfY2FsY19jZGNs ayhpbnQgbWF4X3BpeGNsaykKPiA+ICtzdGF0aWMgaW50IGJ4dF9jYWxjX2NkY2xrKGludCBtaW5f Y2RjbGspCj4gPiAgewo+ID4gLQlpZiAobWF4X3BpeGNsayA+IDU3NjAwMCkKPiA+ICsJaWYgKG1p bl9jZGNsayA+IDU3NjAwMCkKPiA+ICAJCXJldHVybiA2MjQwMDA7Cj4gPiAtCWVsc2UgaWYgKG1h eF9waXhjbGsgPiAzODQwMDApCj4gPiArCWVsc2UgaWYgKG1pbl9jZGNsayA+IDM4NDAwMCkKPiA+ ICAJCXJldHVybiA1NzYwMDA7Cj4gPiAtCWVsc2UgaWYgKG1heF9waXhjbGsgPiAyODgwMDApCj4g PiArCWVsc2UgaWYgKG1pbl9jZGNsayA+IDI4ODAwMCkKPiA+ICAJCXJldHVybiAzODQwMDA7Cj4g PiAtCWVsc2UgaWYgKG1heF9waXhjbGsgPiAxNDQwMDApCj4gPiArCWVsc2UgaWYgKG1pbl9jZGNs ayA+IDE0NDAwMCkKPiA+ICAJCXJldHVybiAyODgwMDA7Cj4gPiAgCWVsc2UKPiA+ICAJCXJldHVy biAxNDQwMDA7Cj4gPiAgfQo+ID4gCj4gPiAtc3RhdGljIGludCBnbGtfY2FsY19jZGNsayhpbnQg bWF4X3BpeGNsaykKPiA+ICtzdGF0aWMgaW50IGdsa19jYWxjX2NkY2xrKGludCBtaW5fY2RjbGsp Cj4gPiAgewo+ID4gLQkvKgo+ID4gLQkgKiBGSVhNRTogQXZvaWQgdXNpbmcgYSBwaXhlbCBjbG9j ayB0aGF0IGlzIG1vcmUgdGhhbiA5OSUgb2YgdGhlIGNkY2xrCj4gPiAtCSAqIGFzIGEgdGVtcG9y YXJ5IHdvcmthcm91bmQuIFVzZSBhIGhpZ2hlciBjZGNsayBpbnN0ZWFkLiAoTm90ZSB0aGF0Cj4g PiAtCSAqIGludGVsX2NvbXB1dGVfbWF4X2RvdGNsaygpIGxpbWl0cyB0aGUgbWF4IHBpeGVsIGNs b2NrIHRvIDk5JSBvZiBtYXgKPiA+IC0JICogY2RjbGsuKQo+ID4gLQkgKi8KPiA+IC0JaWYgKG1h eF9waXhjbGsgPiBESVZfUk9VTkRfVVAoMiAqIDE1ODQwMCAqIDk5LCAxMDApKQo+ID4gKwlpZiAo bWluX2NkY2xrID4gMTU4NDAwKQo+ID4gIAkJcmV0dXJuIDMxNjgwMDsKPiA+IC0JZWxzZSBpZiAo bWF4X3BpeGNsayA+IERJVl9ST1VORF9VUCgyICogNzkyMDAgKiA5OSwgMTAwKSkKPiA+ICsJZWxz ZSBpZiAobWluX2NkY2xrID4gNzkyMDApCj4gPiAgCQlyZXR1cm4gMTU4NDAwOwo+ID4gIAllbHNl Cj4gPiAgCQlyZXR1cm4gNzkyMDA7Cj4gPiBAQCAtMTQyMCwxMSArMTQxMSwxMSBAQCB2b2lkIGJ4 dF91bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdikgYnh0 X3NldF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKPiA+ICB9Cj4gPiAKPiA+IC1zdGF0 aWMgaW50IGNubF9jYWxjX2NkY2xrKGludCBtYXhfcGl4Y2xrKQo+ID4gK3N0YXRpYyBpbnQgY25s X2NhbGNfY2RjbGsoaW50IG1pbl9jZGNsaykKPiA+ICB7Cj4gPiAtCWlmIChtYXhfcGl4Y2xrID4g MzM2MDAwKQo+ID4gKwlpZiAobWluX2NkY2xrID4gMzM2MDAwKQo+ID4gIAkJcmV0dXJuIDUyODAw MDsKPiA+IC0JZWxzZSBpZiAobWF4X3BpeGNsayA+IDE2ODAwMCkKPiA+ICsJZWxzZSBpZiAobWlu X2NkY2xrID4gMTY4MDAwKQo+ID4gIAkJcmV0dXJuIDMzNjAwMDsKPiA+ICAJZWxzZQo+ID4gIAkJ cmV0dXJuIDE2ODAwMDsKPiA+IEBAIC0xNzMyLDk4ICsxNzIzLDEwNiBAQCB2b2lkIGludGVsX3Nl dF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9wcml2LCBkZXZfcHJpdi0+ ZGlzcGxheS5zZXRfY2RjbGsoZGV2X3ByaXYsIGNkY2xrX3N0YXRlKTsKPiA+ICB9Cj4gPiAKPiA+ IC1zdGF0aWMgaW50IGJkd19hZGp1c3RfbWluX3BpcGVfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZQo+ID4gKmNydGNfc3RhdGUsIC0JCQkJCSAgaW50IHBpeGVsX3JhdGUpCj4gPiAr c3RhdGljIGludCBpbnRlbF9taW5fY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+IAo+IFRoZSBuYW1lcyBoYXZlIHN0YXJ0ZWQgdG8gc291bmQgc2ltaWxhci4KPiBpbnRl bF9taW5fY2RjbGsKPiBpbnRlbF9jcnRjX2NvbXB1dGVfbWluX2NkY2xrCj4gaW50ZWxfY29tcHV0 ZV9taW5fY2RjbGsKPiAKPiBJIGNhbid0IHRoaW5rIG9mIGFueXRoaW5nIGJldHRlci4gSG93IGFi b3V0IHNvbWV0aGluZyBsaWtlIAo+IGludGVsX3BpeGVsX3JhdGVfdG9fY2RjbGsoKSA/CgpTdXJl LCBJIGNhbiByZXNwaW4gd2l0aCB0aGF0LgoKPiAKPiAKPiA+ICsJCQkgICBpbnQgcGl4ZWxfcmF0 ZSkKPiA+ICt7Cj4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKQo+ID4gKwkJLyoK PiA+ICsJCSAqIEZJWE1FOiBTd2l0Y2ggdG8gRElWX1JPVU5EX1VQKHBpeGVsX3JhdGUsIDIpCj4g PiArCQkgKiBvbmNlIERESSBjbG9jayB2b2x0YWdlIHJlcXVpcmVtZW50cyBhcmUKPiA+ICsJCSAq IGhhbmRsZWQgY29ycmVjdGx5Lgo+ID4gKwkJICovCj4gPiArCQlyZXR1cm4gcGl4ZWxfcmF0ZTsK PiA+ICsJZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gPiArCQkvKgo+ID4gKwkJ ICogRklYTUU6IEF2b2lkIHVzaW5nIGEgcGl4ZWwgY2xvY2sgdGhhdCBpcyBtb3JlIHRoYW4gOTkl IG9mIHRoZSBjZGNsawo+ID4gKwkJICogYXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZC4gVXNlIGEg aGlnaGVyIGNkY2xrIGluc3RlYWQuIChOb3RlIHRoYXQKPiA+ICsJCSAqIGludGVsX2NvbXB1dGVf bWF4X2RvdGNsaygpIGxpbWl0cyB0aGUgbWF4IHBpeGVsIGNsb2NrIHRvIDk5JSBvZiBtYXgKPiA+ ICsJCSAqIGNkY2xrLikKPiA+ICsJCSAqLwo+ID4gKwkJcmV0dXJuIERJVl9ST1VORF9VUChwaXhl bF9yYXRlICogMTAwLCAyICogOTkpOwo+ID4gKwllbHNlIGlmIChJU19HRU45KGRldl9wcml2KSB8 fAo+ID4gKwkJIElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwgSVNfSEFTV0VMTChkZXZfcHJpdikp Cj4gCj4gSSBkb24ndCBzZWUgd2h5IElTX0hBU1dFTEwoKSBpcyBuZWVkZWQgaGVyZS4gVGhlIGNh bGxlcnMgc2VlbSB0byBuZWVkIGEgCj4gLm1vZGVzZXRfY2FsY19jZGNsaygpIGhvb2sgYW5kIEhh c3dlbGwgZG9lcyBub3QgaGF2ZSBvbmUuCgpJIHN0aWxsIGhhdmUgdGhlIEhTVyBjb2RlIHR1Y2tl ZCBhd2F5IGluIGEgYnJhbmNoIDspCgo+IAo+IAo+ID4gKwkJcmV0dXJuIHBpeGVsX3JhdGU7Cj4g PiArCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ID4gKwkJcmV0dXJuIERJVl9S T1VORF9VUChwaXhlbF9yYXRlICogMTAwLCA5NSk7Cj4gPiArCWVsc2UKPiA+ICsJCXJldHVybiBE SVZfUk9VTkRfVVAocGl4ZWxfcmF0ZSAqIDEwMCwgOTApOwo+IAo+IFR5cGUgb3V0IElTX1ZBTExF WVZJRVcoKSBleHBsaWNpdGx5IGZvciBkb2N1bWVudGF0aW9uPwoKVGhhdCA5MCUgd291bGQgYXBw bHkgdG8gYWxsIHJlbWFpbmluZyBwbGF0Zm9ybXMuIE5vdCB0aGF0IHdlIGN1cnJlbnRseQppbXBs ZW1lbnQgY2RjbGsgZnJlcXVlbmN5IHNjYWxpbmcgZm9yIHRob3NlLCBidXQgd2UgY291bGQgKGF0 IGxlYXN0IGZvcgpzb21lIGdtY2ggcGxhdGZvcm1zKS4KCkV2ZW4gaWYgd2UgbmV2ZXIgYWRkIHRo ZSBjZGNsayBjb2RlIGZvIEhTVy9HTUNIIHBsYXRmb3JtcyBJIHRoaW5rIGtlZXBpbmcKdGhpcyBp biBzeW5jIHdpdGggdGhlIG1heF9kb3RjbG9jaygpIHRoaW5nIG1ha2VzIGl0IGVhc2llciB0byBj cm9zcwpjaGVjayB0aGluZ3MuCgo+IAo+ID4gK30KPiA+ICsKPiA+ICtpbnQgaW50ZWxfY3J0Y19j b21wdXRlX21pbl9jZGNsayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiA+IHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiA+ICAJ CXRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ID4gKwlpbnQgbWluX2NkY2xr Owo+ID4gKwo+ID4gKwlpZiAoIWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQo+ID4gKwkJcmV0dXJu IDA7Cj4gPiArCj4gPiArCW1pbl9jZGNsayA9IGludGVsX21pbl9jZGNsayhkZXZfcHJpdiwgY3J0 Y19zdGF0ZS0+cGl4ZWxfcmF0ZSk7Cj4gPiAKPiA+ICAJLyogcGl4ZWwgcmF0ZSBtdXN0bid0IGV4 Y2VlZCA5NSUgb2YgY2RjbGsgd2l0aCBJUFMgb24gQkRXICovCj4gPiAgCWlmIChJU19CUk9BRFdF TEwoZGV2X3ByaXYpICYmIGNydGNfc3RhdGUtPmlwc19lbmFibGVkKQo+ID4gLQkJcGl4ZWxfcmF0 ZSA9IERJVl9ST1VORF9VUChwaXhlbF9yYXRlICogMTAwLCA5NSk7Cj4gPiArCQltaW5fY2RjbGsg PSBESVZfUk9VTkRfVVAobWluX2NkY2xrICogMTAwLCA5NSk7Cj4gPiAKPiA+ICAJLyogQlNwZWMg c2F5cyAiRG8gbm90IHVzZSBEaXNwbGF5UG9ydCB3aXRoIENEQ0xLIGxlc3MgdGhhbiA0MzIgTUh6 LAo+ID4gIAkgKiBhdWRpbyBlbmFibGVkLCBwb3J0IHdpZHRoIHg0LCBhbmQgbGluayByYXRlIEhC UjIgKDUuNCBHSHopLCBvciBlbHNlCj4gPiAgCSAqIHRoZXJlIG1heSBiZSBhdWRpbyBjb3JydXB0 aW9uIG9yIHNjcmVlbiBjb3JydXB0aW9uLiIgVGhpcyBjZGNsawo+ID4gLQkgKiByZXN0cmljdGlv biBmb3IgR0xLIGlzIDMxNi44IE1IeiBhbmQgc2luY2UgR0xLIGNhbiBvdXRwdXQgdHdvCj4gPiAt CSAqIHBpeGVscyBwZXIgY2xvY2ssIHRoZSBwaXhlbCByYXRlIGJlY29tZXMgMiAqIDMxNi44IE1I ei4KPiA+ICsJICogcmVzdHJpY3Rpb24gZm9yIEdMSyBpcyAzMTYuOCBNSHouCj4gPiAgCSAqLwo+ ID4gIAlpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihjcnRjX3N0YXRlKSAmJgo+ID4gIAkg ICAgY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvICYmCj4gPiAgCSAgICBjcnRjX3N0YXRlLT5wb3J0X2Ns b2NrID49IDU0MDAwMCAmJgo+ID4gIAkgICAgY3J0Y19zdGF0ZS0+bGFuZV9jb3VudCA9PSA0KSB7 Cj4gPiAtCQlpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpCj4gPiAtCQkJcGl4ZWxfcmF0ZSA9 IG1heCgzMTY4MDAsIHBpeGVsX3JhdGUpOwo+ID4gLQkJZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikpCj4gPiAtCQkJcGl4ZWxfcmF0ZSA9IG1heCgyICogMzE2ODAwLCBwaXhlbF9yYXRl KTsKPiA+IC0JCWVsc2UKPiA+IC0JCQlwaXhlbF9yYXRlID0gbWF4KDQzMjAwMCwgcGl4ZWxfcmF0 ZSk7Cj4gPiArCQlpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikgfHwgSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikpIHsKPiA+ICsJCQkvKiBEaXNwbGF5IFdBICMxMTQ1OiBnbGssY25sICovCj4gPiAr CQkJbWluX2NkY2xrID0gbWF4KDMxNjgwMCwgbWluX2NkY2xrKTsKPiA+ICsJCX0gZWxzZSBpZiAo SVNfR0VOOShkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+ID4gKwkJCS8q IERpc3BsYXkgV0EgIzExNDQ6IHNrbCxieHQgKi8KPiA+ICsJCQltaW5fY2RjbGsgPSBtYXgoNDMy MDAwLCBtaW5fY2RjbGspOwo+ID4gKwkJfQo+ID4gIAl9Cj4gPiAKPiA+ICAJLyogQWNjb3JkaW5n IHRvIEJTcGVjLCAiVGhlIENEIGNsb2NrIGZyZXF1ZW5jeSBtdXN0IGJlIGF0IGxlYXN0IHR3aWNl Cj4gPiAgCSAqIHRoZSBmcmVxdWVuY3kgb2YgdGhlIEF6YWxpYSBCQ0xLLiIgYW5kIEJDTEsgaXMg OTYgTUh6IGJ5IGRlZmF1bHQuCj4gPiAtCSAqIFRoZSBjaGVjayBmb3IgR0xLIGhhcyB0byBiZSBh ZGp1c3RlZCBhcyB0aGUgcGxhdGZvcm0gY2FuIG91dHB1dAo+ID4gLQkgKiB0d28gcGl4ZWxzIHBl ciBjbG9jay4KPiA+ICAJICovCj4gPiAtCWlmIChjcnRjX3N0YXRlLT5oYXNfYXVkaW8gJiYgSU5U RUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gPiAtCQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJp dikpCj4gPiAtCQkJcGl4ZWxfcmF0ZSA9IG1heCgyICogMiAqIDk2MDAwLCBwaXhlbF9yYXRlKTsK PiA+IC0JCWVsc2UKPiA+IC0JCQlwaXhlbF9yYXRlID0gbWF4KDIgKiA5NjAwMCwgcGl4ZWxfcmF0 ZSk7Cj4gPiAtCX0KPiA+ICsJaWYgKGNydGNfc3RhdGUtPmhhc19hdWRpbyAmJiBJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDkpCj4gPiArCQltaW5fY2RjbGsgPSBtYXgoMiAqIDk2MDAwLCBtaW5fY2Rj bGspOwo+ID4gCj4gPiAtCXJldHVybiBwaXhlbF9yYXRlOwo+ID4gKwlyZXR1cm4gbWluX2NkY2xr Owo+ID4gIH0KPiA+IAo+ID4gLS8qIGNvbXB1dGUgdGhlIG1heCByYXRlIGZvciBuZXcgY29uZmln dXJhdGlvbiAqLwo+ID4gLXN0YXRpYyBpbnQgaW50ZWxfbWF4X3BpeGVsX3JhdGUoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gK3N0YXRpYyBpbnQgaW50ZWxfY29tcHV0ZV9taW5f Y2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gIHsKPiA+ICAJc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUo c3RhdGUpOwo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KHN0YXRlLT5kZXYpOwo+ID4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPiAtCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3N0YXRlOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiA+ ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gPiAtCXVuc2lnbmVkIGlu dCBtYXhfcGl4ZWxfcmF0ZSA9IDAsIGk7Cj4gPiArCWludCBtaW5fY2RjbGsgPSAwLCBpOwo+ID4g IAllbnVtIHBpcGUgcGlwZTsKPiA+IAo+ID4gLQltZW1jcHkoaW50ZWxfc3RhdGUtPm1pbl9waXhj bGssIGRldl9wcml2LT5taW5fcGl4Y2xrLAo+ID4gLQkgICAgICAgc2l6ZW9mKGludGVsX3N0YXRl LT5taW5fcGl4Y2xrKSk7Cj4gPiAtCj4gPiAtCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0 YXRlLCBjcnRjLCBjc3RhdGUsIGkpIHsKPiA+IC0JCWludCBwaXhlbF9yYXRlOwo+ID4gLQo+ID4g LQkJY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3N0YXRlKTsKPiA+IC0JCWlmICgh Y3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpIHsKPiA+IC0JCQlpbnRlbF9zdGF0ZS0+bWluX3BpeGNs a1tpXSA9IDA7Cj4gPiAtCQkJY29udGludWU7Cj4gPiAtCQl9Cj4gPiArCW1lbWNweShpbnRlbF9z dGF0ZS0+bWluX2NkY2xrLCBkZXZfcHJpdi0+bWluX2NkY2xrLAo+ID4gKwkgICAgICAgc2l6ZW9m KGludGVsX3N0YXRlLT5taW5fY2RjbGspKTsKPiA+IAo+ID4gLQkJcGl4ZWxfcmF0ZSA9IGNydGNf c3RhdGUtPnBpeGVsX3JhdGU7Cj4gPiAtCj4gPiAtCQlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2 KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gPiAtCQkJcGl4ZWxfcmF0ZSA9Cj4gPiAt CQkJCWJkd19hZGp1c3RfbWluX3BpcGVfcGl4ZWxfcmF0ZShjcnRjX3N0YXRlLAo+ID4gLQkJCQkJ CQkgICAgICAgcGl4ZWxfcmF0ZSk7Cj4gPiAtCj4gPiAtCQlpbnRlbF9zdGF0ZS0+bWluX3BpeGNs a1tpXSA9IHBpeGVsX3JhdGU7Cj4gPiAtCX0KPiA+ICsJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNf aW5fc3RhdGUoaW50ZWxfc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpCj4gPiArCQlpbnRlbF9z dGF0ZS0+bWluX2NkY2xrW2ldID0KPiA+ICsJCQlpbnRlbF9jcnRjX2NvbXB1dGVfbWluX2NkY2xr KGNydGNfc3RhdGUpOwo+ID4gCj4gCj4gTGlrZSBJIHdyb3RlIGFib3ZlLCB3ZSBjb3VsZCBqdXN0 IHJldXNlIGZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKCkgCgpBcyBtZW50aW9uZWQgdGhhdCBk b2Vzbid0IGFncmVlIHdpdGggdGhlIGRpcmVjdGlvbiB3aGVyZSB3ZSB3YW50IHRvIGdvLgoKPiAK PiA+ICAJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPiA+IC0JCW1heF9waXhlbF9yYXRl ID0gbWF4KGludGVsX3N0YXRlLT5taW5fcGl4Y2xrW3BpcGVdLAo+ID4gLQkJCQkgICAgIG1heF9w aXhlbF9yYXRlKTsKPiA+ICsJCW1pbl9jZGNsayA9IG1heChpbnRlbF9zdGF0ZS0+bWluX2NkY2xr W3BpcGVdLCBtaW5fY2RjbGspOwo+ID4gCj4gPiAtCXJldHVybiBtYXhfcGl4ZWxfcmF0ZTsKPiA+ ICsJcmV0dXJuIG1pbl9jZGNsazsKPiA+ICB9Cj4gPiAKPiA+ICBzdGF0aWMgaW50IHZsdl9tb2Rl c2V0X2NhbGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gIHsKPiA+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2 KTsKPiA+IC0JaW50IG1heF9waXhjbGsgPSBpbnRlbF9tYXhfcGl4ZWxfcmF0ZShzdGF0ZSk7Cj4g PiArCWludCBtaW5fY2RjbGsgPSBpbnRlbF9jb21wdXRlX21pbl9jZGNsayhzdGF0ZSk7Cj4gPiAg CXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KPiA+ICAJCXRvX2ludGVs X2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4gPiAgCWludCBjZGNsazsKPiA+IAo+ID4gLQljZGNsayA9 IHZsdl9jYWxjX2NkY2xrKGRldl9wcml2LCBtYXhfcGl4Y2xrKTsKPiA+ICsJY2RjbGsgPSB2bHZf Y2FsY19jZGNsayhkZXZfcHJpdiwgbWluX2NkY2xrKTsKPiA+IAo+ID4gIAlpZiAoY2RjbGsgPiBk ZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpIHsKPiA+ICAJCURSTV9ERUJVR19LTVMoInJlcXVlc3Rl ZCBjZGNsayAoJWQga0h6KSBleGNlZWRzIG1heCAoJWQga0h6KVxuIiwKPiA+IEBAIC0xODQ5LDE0 ICsxODQ4LDE0IEBAIHN0YXRpYyBpbnQgYmR3X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QKPiA+ IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKSB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiA+ IC0JaW50IG1heF9waXhjbGsgPSBpbnRlbF9tYXhfcGl4ZWxfcmF0ZShzdGF0ZSk7Cj4gPiArCWlu dCBtaW5fY2RjbGsgPSBpbnRlbF9jb21wdXRlX21pbl9jZGNsayhzdGF0ZSk7Cj4gPiAgCWludCBj ZGNsazsKPiA+IAo+ID4gIAkvKgo+ID4gIAkgKiBGSVhNRSBzaG91bGQgYWxzbyBhY2NvdW50IGZv ciBwbGFuZSByYXRpbwo+ID4gIAkgKiBvbmNlIDY0YnBwIHBpeGVsIGZvcm1hdHMgYXJlIHN1cHBv cnRlZC4KPiA+ICAJICovCj4gPiAtCWNkY2xrID0gYmR3X2NhbGNfY2RjbGsobWF4X3BpeGNsayk7 Cj4gPiArCWNkY2xrID0gYmR3X2NhbGNfY2RjbGsobWluX2NkY2xrKTsKPiA+IAo+ID4gIAlpZiAo Y2RjbGsgPiBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpIHsKPiA+ICAJCURSTV9ERUJVR19LTVMo InJlcXVlc3RlZCBjZGNsayAoJWQga0h6KSBleGNlZWRzIG1heCAoJWQga0h6KVxuIiwKPiA+IEBA IC0xODgyLDcgKzE4ODEsNyBAQCBzdGF0aWMgaW50IHNrbF9tb2Rlc2V0X2NhbGNfY2RjbGsoc3Ry dWN0Cj4gPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkgewo+ID4gIAlzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4g PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRl dik7Cj4gPiAtCWNvbnN0IGludCBtYXhfcGl4Y2xrID0gaW50ZWxfbWF4X3BpeGVsX3JhdGUoc3Rh dGUpOwo+ID4gKwlpbnQgbWluX2NkY2xrID0gaW50ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RhdGUp Owo+ID4gIAlpbnQgY2RjbGssIHZjbzsKPiA+IAo+ID4gIAl2Y28gPSBpbnRlbF9zdGF0ZS0+Y2Rj bGsubG9naWNhbC52Y287Cj4gPiBAQCAtMTg5Myw3ICsxODkyLDcgQEAgc3RhdGljIGludCBza2xf bW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdAo+ID4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpICog RklYTUUgc2hvdWxkIGFsc28gYWNjb3VudCBmb3IgcGxhbmUgcmF0aW8KPiA+ICAJICogb25jZSA2 NGJwcCBwaXhlbCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCj4gPiAgCSAqLwo+ID4gLQljZGNsayA9 IHNrbF9jYWxjX2NkY2xrKG1heF9waXhjbGssIHZjbyk7Cj4gPiArCWNkY2xrID0gc2tsX2NhbGNf Y2RjbGsobWluX2NkY2xrLCB2Y28pOwo+ID4gCj4gPiAgCWlmIChjZGNsayA+IGRldl9wcml2LT5t YXhfY2RjbGtfZnJlcSkgewo+ID4gIAkJRFJNX0RFQlVHX0tNUygicmVxdWVzdGVkIGNkY2xrICgl ZCBrSHopIGV4Y2VlZHMgbWF4ICglZCBrSHopXG4iLAo+ID4gQEAgLTE5MjAsMTYgKzE5MTksMTYg QEAgc3RhdGljIGludCBza2xfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdAo+ID4gZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpIHN0YXRpYyBpbnQgYnh0X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QK PiA+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKSB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4gPiAtCWludCBtYXhfcGl4Y2xr ID0gaW50ZWxfbWF4X3BpeGVsX3JhdGUoc3RhdGUpOwo+ID4gKwlpbnQgbWluX2NkY2xrID0gaW50 ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RhdGUpOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICppbnRlbF9zdGF0ZSA9Cj4gPiAgCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ ID4gIAlpbnQgY2RjbGssIHZjbzsKPiA+IAo+ID4gIAlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJp dikpIHsKPiA+IC0JCWNkY2xrID0gZ2xrX2NhbGNfY2RjbGsobWF4X3BpeGNsayk7Cj4gPiArCQlj ZGNsayA9IGdsa19jYWxjX2NkY2xrKG1pbl9jZGNsayk7Cj4gPiAgCQl2Y28gPSBnbGtfZGVfcGxs X3ZjbyhkZXZfcHJpdiwgY2RjbGspOwo+ID4gIAl9IGVsc2Ugewo+ID4gLQkJY2RjbGsgPSBieHRf Y2FsY19jZGNsayhtYXhfcGl4Y2xrKTsKPiA+ICsJCWNkY2xrID0gYnh0X2NhbGNfY2RjbGsobWlu X2NkY2xrKTsKPiA+ICAJCXZjbyA9IGJ4dF9kZV9wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7Cj4g PiAgCX0KPiA+IAo+ID4gQEAgLTE5NjYsMTAgKzE5NjUsMTAgQEAgc3RhdGljIGludCBjbmxfbW9k ZXNldF9jYWxjX2NkY2xrKHN0cnVjdAo+ID4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gPiB0b19pOTE1KHN0YXRlLT5kZXYpOwo+ ID4gIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9Cj4gPiAgCQl0b19p bnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ID4gLQlpbnQgbWF4X3BpeGNsayA9IGludGVsX21h eF9waXhlbF9yYXRlKHN0YXRlKTsKPiA+ICsJaW50IG1pbl9jZGNsayA9IGludGVsX2NvbXB1dGVf bWluX2NkY2xrKHN0YXRlKTsKPiA+ICAJaW50IGNkY2xrLCB2Y287Cj4gPiAKPiA+IC0JY2RjbGsg PSBjbmxfY2FsY19jZGNsayhtYXhfcGl4Y2xrKTsKPiA+ICsJY2RjbGsgPSBjbmxfY2FsY19jZGNs ayhtaW5fY2RjbGspOwo+ID4gIAl2Y28gPSBjbmxfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2Rj bGspOwo+ID4gCj4gPiAgCWlmIChjZGNsayA+IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSkgewo+ ID4gQEAgLTE5OTksMTQgKzE5OTgsMjEgQEAgc3RhdGljIGludCBpbnRlbF9jb21wdXRlX21heF9k b3RjbGsoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikgewo+ID4gIAlpbnQg bWF4X2NkY2xrX2ZyZXEgPSBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXE7Cj4gPiAKPiA+IC0JaWYg KElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ID4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMCkKPiA+ICsJCS8qCj4gPiArCQkgKiBGSVhNRTogQWxsb3cgJzIgKiBtYXhfY2RjbGtfZnJl cScKPiA+ICsJCSAqIG9uY2UgRERJIGNsb2NrIHZvbHRhZ2UgcmVxdWlyZW1lbnRzIGFyZQo+ID4g KwkJICogaGFuZGxlZCBjb3JyZWN0bHkuCj4gPiArCQkgKi8KPiA+ICsJCXJldHVybiBtYXhfY2Rj bGtfZnJlcTsKPiA+ICsJZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gPiAgCQkv Kgo+ID4gIAkJICogRklYTUU6IExpbWl0aW5nIHRvIDk5JSBhcyBhIHRlbXBvcmFyeSB3b3JrYXJv dW5kLiBTZWUKPiA+IC0JCSAqIGdsa19jYWxjX2NkY2xrKCkgZm9yIGRldGFpbHMuCj4gPiArCQkg KiBpbnRlbF9taW5fY2RjbGsoKSBmb3IgZGV0YWlscy4KPiA+ICAJCSAqLwo+ID4gIAkJcmV0dXJu IDIgKiBtYXhfY2RjbGtfZnJlcSAqIDk5IC8gMTAwOwo+ID4gLQllbHNlIGlmIChJTlRFTF9JTkZP KGRldl9wcml2KS0+Z2VuID49IDkgfHwKPiA+IC0JCSBJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ID4gKwllbHNlIGlmIChJU19HRU45KGRldl9wcml2KSB8 fAo+ID4gKwkJIElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwgSVNfSEFTV0VMTChkZXZfcHJpdikp Cj4gPiAgCQlyZXR1cm4gbWF4X2NkY2xrX2ZyZXE7Cj4gPiAgCWVsc2UgaWYgKElTX0NIRVJSWVZJ RVcoZGV2X3ByaXYpKQo+ID4gIAkJcmV0dXJuIG1heF9jZGNsa19mcmVxKjk1LzEwMDsKPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGluZGV4IDIxNDRhZGM1YjFkNS4uYjQ3 NTM1ZjVkOTVkCj4gPiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4gPiBAQCAtNTkyMCw3ICs1OTIwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxl X25vYXRvbWljKHN0cnVjdAo+ID4gZHJtX2NydGMgKmNydGMsIGludGVsX2NydGMtPmVuYWJsZWRf cG93ZXJfZG9tYWlucyA9IDA7Cj4gPiAKPiA+ICAJZGV2X3ByaXYtPmFjdGl2ZV9jcnRjcyAmPSB+ KDEgPDwgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gPiAtCWRldl9wcml2LT5taW5fcGl4Y2xrW2ludGVs X2NydGMtPnBpcGVdID0gMDsKPiA+ICsJZGV2X3ByaXYtPm1pbl9jZGNsa1tpbnRlbF9jcnRjLT5w aXBlXSA9IDA7Cj4gPiAgfQo+ID4gCj4gPiAgLyoKPiA+IEBAIC0xMzI5Miw4ICsxMzI5Miw4IEBA IHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZQo+ID4gKmRl diwgaW50ZWxfYXRvbWljX3RyYWNrX2ZicyhzdGF0ZSk7Cj4gPiAKPiA+ICAJaWYgKGludGVsX3N0 YXRlLT5tb2Rlc2V0KSB7Cj4gPiAtCQltZW1jcHkoZGV2X3ByaXYtPm1pbl9waXhjbGssIGludGVs X3N0YXRlLT5taW5fcGl4Y2xrLAo+ID4gLQkJICAgICAgIHNpemVvZihpbnRlbF9zdGF0ZS0+bWlu X3BpeGNsaykpOwo+ID4gKwkJbWVtY3B5KGRldl9wcml2LT5taW5fY2RjbGssIGludGVsX3N0YXRl LT5taW5fY2RjbGssCj4gPiArCQkgICAgICAgc2l6ZW9mKGludGVsX3N0YXRlLT5taW5fY2RjbGsp KTsKPiA+ICAJCWRldl9wcml2LT5hY3RpdmVfY3J0Y3MgPSBpbnRlbF9zdGF0ZS0+YWN0aXZlX2Ny dGNzOwo+ID4gIAkJZGV2X3ByaXYtPmNkY2xrLmxvZ2ljYWwgPSBpbnRlbF9zdGF0ZS0+Y2RjbGsu bG9naWNhbDsKPiA+ICAJCWRldl9wcml2LT5jZGNsay5hY3R1YWwgPSBpbnRlbF9zdGF0ZS0+Y2Rj bGsuYWN0dWFsOwo+ID4gQEAgLTE1NTY5LDcgKzE1NTY5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf bW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdAo+ID4gZHJtX2RldmljZSAqZGV2KSBmb3Jf ZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+ID4gIAkJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUgPQo+ID4gIAkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5z dGF0ZSk7Cj4gPiAtCQlpbnQgcGl4Y2xrID0gMDsKPiA+ICsJCWludCBtaW5fY2RjbGsgPSAwOwo+ ID4gCj4gPiAgCQltZW1zZXQoJmNydGMtPmJhc2UubW9kZSwgMCwgc2l6ZW9mKGNydGMtPmJhc2Uu bW9kZSkpOwo+ID4gIAkJaWYgKGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKSB7Cj4gPiBAQCAtMTU1 OTAsMjIgKzE1NTkwLDE1IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91dF9od19z dGF0ZShzdHJ1Y3QKPiA+IGRybV9kZXZpY2UgKmRldikKPiA+IAo+ID4gIAkJCWludGVsX2NydGNf Y29tcHV0ZV9waXhlbF9yYXRlKGNydGNfc3RhdGUpOwo+ID4gCj4gPiAtCQkJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8Cj4gPiAtCQkJICAg IElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ID4g LQkJCQlwaXhjbGsgPSBjcnRjX3N0YXRlLT5waXhlbF9yYXRlOwo+ID4gLQkJCWVsc2UKPiA+IC0J CQkJV0FSTl9PTihkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGspOwo+ID4gLQo+ ID4gLQkJCS8qIHBpeGVsIHJhdGUgbXVzdG4ndCBleGNlZWQgOTUlIG9mIGNkY2xrIHdpdGggSVBT IG9uIEJEVyAqLwo+ID4gLQkJCWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpICYmIGNydGNfc3Rh dGUtPmlwc19lbmFibGVkKQo+ID4gLQkJCQlwaXhjbGsgPSBESVZfUk9VTkRfVVAocGl4Y2xrICog MTAwLCA5NSk7Cj4gPiArCQkJaWYgKGRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNs aykKPiA+ICsJCQkJbWluX2NkY2xrID0gaW50ZWxfY3J0Y19jb21wdXRlX21pbl9jZGNsayhjcnRj X3N0YXRlKTsKPiAKPiBIbW0uIFNvIHdlIHdlcmUgbm90IGFwcGx5aW5nIHRoZSBhdWRpbyB3b3Jr YXJvdW5kcyBoZXJlLiBXb25kZXIgd2h5IGl0IGRpZCBub3QgCj4gY2F1c2UgYW55IHRyb3VibGUu CgpJIGd1ZXNzIHVzdWFsbHkgdGhlcmUncyBhIG1vZGVzZXQgaGFwcGVuaW5nIGF0IHNvbWUgcG9p bnQuCgo+IAo+IEkgYmVsaWV2ZSwgdGhlIC5tb2Rlc2V0X2NhbGNfY2RjbGsoKSBmdW5jdGlvbnMg YXJlIG5vdCBjYWxsZWQgd2hlbiB0aGlzIAo+IGh3X3N0YXRlIGlzIGNvbW1pdHRlZC4gSXMgdGhh dCByaWdodD8KClRoaXMgaXMgdGhlIHN0YXRlIHJlYWRvdXQgZm9yIGluaXQvcmVzdW1lLiBTbyBu b3Qgc3VyZSB3aGljaCBjb21taXQKeW91J3JlIHJlZmVycmluZyB0byBoZXJlPwoKPiAKPiAKPiA+ IAo+ID4gIAkJCWRybV9jYWxjX3RpbWVzdGFtcGluZ19jb25zdGFudHMoJmNydGMtPmJhc2UsCj4g PiAgCQkJCQkJCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUpOwo+ID4gIAkJCXVwZGF0 ZV9zY2FubGluZV9vZmZzZXQoY3J0Yyk7Cj4gPiAgCQl9Cj4gPiAKPiA+IC0JCWRldl9wcml2LT5t aW5fcGl4Y2xrW2NydGMtPnBpcGVdID0gcGl4Y2xrOwo+ID4gKwkJZGV2X3ByaXYtPm1pbl9jZGNs a1tjcnRjLT5waXBlXSA9IG1pbl9jZGNsazsKPiA+IAo+ID4gIAkJaW50ZWxfcGlwZV9jb25maWdf c2FuaXR5X2NoZWNrKGRldl9wcml2LCBjcnRjX3N0YXRlKTsKPiA+ICAJfQo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIGluZGV4IGQxN2EzMjQzN2YwNy4uOGNjMWI4NmI3OTlhIDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBAQCAtMzgzLDcgKzM4Myw4IEBAIHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgewo+ID4gIAl1bnNpZ25lZCBpbnQgYWN0aXZlX3BpcGVf Y2hhbmdlczsKPiA+IAo+ID4gIAl1bnNpZ25lZCBpbnQgYWN0aXZlX2NydGNzOwo+ID4gLQl1bnNp Z25lZCBpbnQgbWluX3BpeGNsa1tJOTE1X01BWF9QSVBFU107Cj4gPiArCS8qIG1pbmltdW0gYWNj ZXB0YWJsZSBjZGNsayBmb3IgZWFjaCBwaXBlICovCj4gPiArCWludCBtaW5fY2RjbGtbSTkxNV9N QVhfUElQRVNdOwo+ID4gCj4gPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9zdGF0ZSBzaGFy ZWRfZHBsbFtJOTE1X05VTV9QTExTXTsKPiA+IAo+ID4gQEAgLTEzMDgsNiArMTMwOSw3IEBAIHZv aWQgaW50ZWxfYXVkaW9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9wcml2 KTsgdm9pZCBpbnRlbF9hdWRpb19kZWluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKPiA+IAo+ID4gIC8qIGludGVsX2NkY2xrLmMgKi8KPiA+ICtpbnQgaW50ZWxfY3J0Y19j b21wdXRlX21pbl9jZGNsayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gKmNydGNf c3RhdGUpOyB2b2lkIHNrbF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7Cj4gPiAgdm9pZCBza2xfdW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Cj4gPiAgdm9pZCBjbmxfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwo+IAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==