From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v4 2/8] drm/i915: Use literal representation of cdclk tables Date: Tue, 10 Sep 2019 19:04:03 +0300 Message-ID: <20190910160403.GT7482@intel.com> References: <20190910154252.30503-1-matthew.d.roper@intel.com> <20190910154252.30503-3-matthew.d.roper@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 ESMTPS id D99816E924 for ; Tue, 10 Sep 2019 16:04:06 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190910154252.30503-3-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBTZXAgMTAsIDIwMTkgYXQgMDg6NDI6NDZBTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBUaGUgYnNwZWMgbGF5cyBvdXQgbGVnYWwgY2RjbGsgZnJlcXVlbmNpZXMsIFBMTCByYXRp b3MsIGFuZCBDRDJYCj4gZGl2aWRlcnMgaW4gYW4gZWFzeS10by1yZWFkIHRhYmxlIGZvciBtb3N0 IHJlY2VudCBwbGF0Zm9ybXMuICBXZSd2ZSBiZWVuCj4gdHJhbnNsYXRpbmcgdGhlIGRhdGEgZnJv bSB0aGF0IHRhYmxlIGludG8gcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBsb2dpYywKPiBidXQgaXQn cyBlYXN5IHRvIG92ZXJsb29rIGFuIGFyZWEgd2UgbmVlZCB0byB1cGRhdGUgd2hlbiBhZGRpbmcg bmV3Cj4gY2RjbGsgdmFsdWVzIG9yIGVuYWJsaW5nIG5ldyBwbGF0Zm9ybXMuICBMZXQncyBqdXN0 IGFkZCBhIGZvcm0gb2YgdGhlCj4gYnNwZWMgdGFibGUgdG8gdGhlIGNvZGUgYW5kIHRoZW4gYWRq dXN0IG91ciBmdW5jdGlvbnMgdG8gcHVsbCB3aGF0IHRoZXkKPiBuZWVkIGRpcmVjdGx5IG91dCBv ZiB0aGUgdGFibGUuCj4gCj4gdjI6IEZpeCBjb21wYXJpc29uIHdoZW4gZmluZGluZyBiZXN0IGNk Y2xrLgo+IAo+IHYzOiBBbm90aGVyIGxvZ2ljIGZpeCBmb3IgY2FsY19jZGNsay4KPiAKPiB2NDoK PiAgLSBVc2UgbmFtZWQgaW5pdGlhbGl6ZXJzIGZvciBjZGNsayB0YWJsZXMuIChWaWxsZSkKPiAg LSBJbmNsdWRlIHJlZmNsayBhcyBhIGZpZWxkIGluIHRoZSB0YWJsZSBpbnN0ZWFkIG9mIGFkZGlu ZyBhbGwgdGhyZWUKPiAgICByYXRpb3MgZm9yIGVhY2ggZW50cnkuIChWaWxsZSkKPiAgLSBUZXJt aW5hdGUgdGFibGVzIHdpdGggYW4gZW1wdHkgZW50cnkgdG8gYXZvaWQgbmVlZGluZyB0byBzdG9y ZSB0aGUKPiAgICB0YWJsZSBzaXplLiAoVmlsbGUpCj4gIC0gRG9uJ3QgdHJ5IHNvIGhhcmQgdG8g cmV0dXJuIHJlYXNvbmFibGUgdmFsdWVzIGZyb20gb3VyIGxvb2t1cAo+ICAgIGZ1bmN0aW9ucyBp ZiB3ZSBnZXQgaW1wb3NzaWJsZSBpbnB1dHM7IGp1c3QgV0FSTiBhbmQgcmV0dXJuIDAuCj4gICAg KFZpbGxlKQo+ICAtIEtlZXAgYSBieHRfIHByZWZpeCBvbiB0aGUgbG9va3VwIGZ1bmN0aW9ucyBz aW5jZSB0aGV5J3JlIHN0aWxsIG9ubHkKPiAgICB1c2VkIG9uIGJ4dCsgZm9yIG5vdy4gIFdlIGNh biByZW5hbWUgdGhlbSBsYXRlciBpZiB3ZSBleHRlbmQgdGhpcwo+ICAgIHRhYmxlLWJhc2VkIGFw cHJvYWNoIGJhY2sgdG8gb2xkZXIgcGxhdGZvcm1zLiAgKFZpbGxlKQo+IAo+IENjOiBWaWxsZSBT eXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6 IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsuYyB8IDMwMyArKysrKysrLS0tLS0tLS0t LS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5oIHwgICA3 ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgICAzICsK PiAgMyBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMjAzIGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xr LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMKPiBpbmRleCAw MWVkMzI2MmQ5MWUuLmM4Y2YyODhiOGU4ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2NkY2xrLmMKPiBAQCAtMTE2MSwyOCArMTE2MSw4OCBAQCBzdGF0aWMgdm9p ZCBza2xfdW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CXNrbF9zZXRfY2RjbGsoZGV2X3ByaXYsICZjZGNsa19zdGF0ZSwgSU5WQUxJRF9QSVBFKTsKPiAg fQo+ICAKPiAtc3RhdGljIGludCBieHRfY2FsY19jZGNsayhpbnQgbWluX2NkY2xrKQo+IC17Cj4g LQlpZiAobWluX2NkY2xrID4gNTc2MDAwKQo+IC0JCXJldHVybiA2MjQwMDA7Cj4gLQllbHNlIGlm IChtaW5fY2RjbGsgPiAzODQwMDApCj4gLQkJcmV0dXJuIDU3NjAwMDsKPiAtCWVsc2UgaWYgKG1p bl9jZGNsayA+IDI4ODAwMCkKPiAtCQlyZXR1cm4gMzg0MDAwOwo+IC0JZWxzZSBpZiAobWluX2Nk Y2xrID4gMTQ0MDAwKQo+IC0JCXJldHVybiAyODgwMDA7Cj4gLQllbHNlCj4gLQkJcmV0dXJuIDE0 NDAwMDsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa192YWxzIGJ4dF9jZGNsa190 YWJsZVtdID0gewo+ICsJeyAucmVmY2xrID0gMTkyMDAsIC5jZGNsayA9IDE0NDAwMCwgLmRpdmlk ZXIgPSA4LCAucmF0aW8gPSA2MCB9LAo+ICsJeyAucmVmY2xrID0gMTkyMDAsIC5jZGNsayA9IDI4 ODAwMCwgLmRpdmlkZXIgPSA0LCAucmF0aW8gPSA2MCB9LAo+ICsJeyAucmVmY2xrID0gMTkyMDAs IC5jZGNsayA9IDM4NDAwMCwgLmRpdmlkZXIgPSAzLCAucmF0aW8gPSA2MCB9LAo+ICsJeyAucmVm Y2xrID0gMTkyMDAsIC5jZGNsayA9IDU3NjAwMCwgLmRpdmlkZXIgPSAyLCAucmF0aW8gPSA2MCB9 LAo+ICsJeyAucmVmY2xrID0gMTkyMDAsIC5jZGNsayA9IDYyNDAwMCwgLmRpdmlkZXIgPSAyLCAu cmF0aW8gPSA2NSB9LAo+ICsJe30KPiArfTsKCklmIG9ubHkgd2UgaGFkIGNvbnN0ZXhwciBzbyB3 ZSBjb3VsZCBkbwpCVUlMRF9CVUdfT04ocmVmKnJhdGlvID09IGNkY2xrKmRpdikgd2l0aG91dCBo YXZpbmcgdG8gaGFuZCByb2xsCml0IGZvciBldmVyeSB0YWJsZSBlbnRyeS4gT2ggd2VsbC4KCj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3ZhbHMgZ2xrX2NkY2xrX3RhYmxl W10gPSB7Cj4gKwl7IC5yZWZjbGsgPSAxOTIwMCwgLmNkY2xrID0gIDc5MjAwLCAuZGl2aWRlciA9 IDgsIC5yYXRpbyA9IDMzIH0sCj4gKwl7IC5yZWZjbGsgPSAxOTIwMCwgLmNkY2xrID0gMTU4NDAw LCAuZGl2aWRlciA9IDQsIC5yYXRpbyA9IDMzIH0sCj4gKwl7IC5yZWZjbGsgPSAxOTIwMCwgLmNk Y2xrID0gMzE2ODAwLCAuZGl2aWRlciA9IDIsIC5yYXRpbyA9IDMzIH0sCj4gKwl7fQo+ICt9Owo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa192YWxzIGNubF9jZGNsa190YWJs ZVtdID0gewo+ICsJeyAucmVmY2xrID0gMTkyMDAsIC5jZGNsayA9IDE2ODAwMCwgNCwgMzUgfSwK PiArCXsgLnJlZmNsayA9IDE5MjAwLCAuY2RjbGsgPSAzMzYwMDAsIDIsIDM1IH0sCj4gKwl7IC5y ZWZjbGsgPSAxOTIwMCwgLmNkY2xrID0gNTI4MDAwLCAyLCA1NSB9LAo+ICsKPiArCXsgLnJlZmNs ayA9IDI0MDAwLCAuY2RjbGsgPSAxNjgwMDAsIDQsIDM1IH0sCj4gKwl7IC5yZWZjbGsgPSAyNDAw MCwgLmNkY2xrID0gMzM2MDAwLCAyLCAzNSB9LAo+ICsJeyAucmVmY2xrID0gMjQwMDAsIC5jZGNs ayA9IDUyODAwMCwgMiwgNTUgfSwKClRoZSByYXRpb3MgbG9va3Mgd3JvbmcgaGVyZS4gQWxzbyBt aXNzaW5nIC5kaXZpZGVyPSBhbmQgLnJhdGlvPS4KCj4gKwl7fQo+ICt9Owo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa192YWxzIGljbF9jZGNsa190YWJsZVtdID0gewo+ICsJ eyAucmVmY2xrID0gMTkyMDAsIC5jZGNsayA9IDE3MjgwMCwgLmRpdmlkZXIgPSAyLCAucmF0aW8g PSAxOCB9LAo+ICsJeyAucmVmY2xrID0gMTkyMDAsIC5jZGNsayA9IDE5MjAwMCwgLmRpdmlkZXIg PSAyLCAucmF0aW8gPSAyMCB9LAo+ICsJeyAucmVmY2xrID0gMTkyMDAsIC5jZGNsayA9IDMwNzIw MCwgLmRpdmlkZXIgPSAyLCAucmF0aW8gPSAzMiB9LAo+ICsJeyAucmVmY2xrID0gMTkyMDAsIC5j ZGNsayA9IDMyNjQwMCwgLmRpdmlkZXIgPSA0LCAucmF0aW8gPSA2OCB9LAo+ICsJeyAucmVmY2xr ID0gMTkyMDAsIC5jZGNsayA9IDU1NjgwMCwgLmRpdmlkZXIgPSAyLCAucmF0aW8gPSA1OCB9LAo+ ICsJeyAucmVmY2xrID0gMTkyMDAsIC5jZGNsayA9IDY1MjgwMCwgLmRpdmlkZXIgPSAyLCAucmF0 aW8gPSA2OCB9LAo+ICsKPiArCXsgLnJlZmNsayA9IDI0MDAwLCAuY2RjbGsgPSAxODAwMDAsIC5k aXZpZGVyID0gMiwgLnJhdGlvID0gMTUgfSwKPiArCXsgLnJlZmNsayA9IDI0MDAwLCAuY2RjbGsg PSAxOTIwMDAsIC5kaXZpZGVyID0gMiwgLnJhdGlvID0gMTYgfSwKPiArCXsgLnJlZmNsayA9IDI0 MDAwLCAuY2RjbGsgPSAzMTIwMDAsIC5kaXZpZGVyID0gMiwgLnJhdGlvID0gMjYgfSwKPiArCXsg LnJlZmNsayA9IDI0MDAwLCAuY2RjbGsgPSAzMjQwMDAsIC5kaXZpZGVyID0gNCwgLnJhdGlvID0g NTQgfSwKPiArCXsgLnJlZmNsayA9IDI0MDAwLCAuY2RjbGsgPSA1NTIwMDAsIC5kaXZpZGVyID0g MiwgLnJhdGlvID0gNDYgfSwKPiArCXsgLnJlZmNsayA9IDI0MDAwLCAuY2RjbGsgPSA2NDgwMDAs IC5kaXZpZGVyID0gMiwgLnJhdGlvID0gNTQgfSwKPiArCj4gKwl7IC5yZWZjbGsgPSAzODQwMCwg LmNkY2xrID0gMTcyODAwLCAuZGl2aWRlciA9IDIsIC5yYXRpbyA9ICA5IH0sCj4gKwl7IC5yZWZj bGsgPSAzODQwMCwgLmNkY2xrID0gMTkyMDAwLCAuZGl2aWRlciA9IDIsIC5yYXRpbyA9IDEwIH0s Cj4gKwl7IC5yZWZjbGsgPSAzODQwMCwgLmNkY2xrID0gMzA3MjAwLCAuZGl2aWRlciA9IDIsIC5y YXRpbyA9IDE2IH0sCj4gKwl7IC5yZWZjbGsgPSAzODQwMCwgLmNkY2xrID0gMzI2NDAwLCAuZGl2 aWRlciA9IDQsIC5yYXRpbyA9IDM0IH0sCj4gKwl7IC5yZWZjbGsgPSAzODQwMCwgLmNkY2xrID0g NTU2ODAwLCAuZGl2aWRlciA9IDIsIC5yYXRpbyA9IDI5IH0sCj4gKwl7IC5yZWZjbGsgPSAzODQw MCwgLmNkY2xrID0gNjUyODAwLCAuZGl2aWRlciA9IDIsIC5yYXRpbyA9IDM0IH0sCj4gKwl7fQo+ ICt9OwoKRXZlcnl0aGluZyBlbHNlIHNlZW1zIHRvIGNoZWNrIG91dC4KCldpdGggdGhlIGNubCB0 YWJsZXMgZml4ZWQ6ClJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPgoKPiArCj4gK3N0YXRpYyBpbnQgYnh0X2NhbGNfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgbWluX2NkY2xrKQo+ICt7Cj4gKwljb25z dCBzdHJ1Y3QgaW50ZWxfY2RjbGtfdmFscyAqdGFibGUgPSBkZXZfcHJpdi0+Y2RjbGsudGFibGU7 Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyB0YWJsZVtpXS5yZWZjbGs7IGkrKykKPiAr CQlpZiAodGFibGVbaV0ucmVmY2xrID09IGRldl9wcml2LT5jZGNsay5ody5yZWYgJiYKPiArCQkg ICAgdGFibGVbaV0uY2RjbGsgPj0gbWluX2NkY2xrKQo+ICsJCQlyZXR1cm4gdGFibGVbaV0uY2Rj bGs7Cj4gKwo+ICsJV0FSTigxLCAiQ2Fubm90IHNhdGlzZnkgbWluaW11bSBjZGNsayAlZCB3aXRo IHJlZmNsayAldVxuIiwKPiArCSAgICAgbWluX2NkY2xrLCBkZXZfcHJpdi0+Y2RjbGsuaHcucmVm KTsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGdsa19jYWxjX2NkY2xrKGlu dCBtaW5fY2RjbGspCj4gK3N0YXRpYyBpbnQgYnh0X2NhbGNfY2RjbGtfcGxsX3ZjbyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBjZGNsaykKPiAgewo+IC0JaWYgKG1pbl9j ZGNsayA+IDE1ODQwMCkKPiAtCQlyZXR1cm4gMzE2ODAwOwo+IC0JZWxzZSBpZiAobWluX2NkY2xr ID4gNzkyMDApCj4gLQkJcmV0dXJuIDE1ODQwMDsKPiAtCWVsc2UKPiAtCQlyZXR1cm4gNzkyMDA7 Cj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfdmFscyAqdGFibGUgPSBkZXZfcHJpdi0+Y2Rj bGsudGFibGU7Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAoY2RjbGsgPT0gZGV2X3ByaXYtPmNkY2xr Lmh3LmJ5cGFzcykKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlmb3IgKGkgPSAwOyB0YWJsZVtpXS5y ZWZjbGs7IGkrKykKPiArCQlpZiAodGFibGVbaV0ucmVmY2xrID09IGRldl9wcml2LT5jZGNsay5o dy5yZWYgJiYKPiArCQkgICAgdGFibGVbaV0uY2RjbGsgPT0gY2RjbGspCj4gKwkJCXJldHVybiBk ZXZfcHJpdi0+Y2RjbGsuaHcucmVmICogdGFibGVbaV0ucmF0aW87Cj4gKwo+ICsJV0FSTigxLCAi Y2RjbGsgJWQgbm90IHZhbGlkIGZvciByZWZjbGsgJXVcbiIsCj4gKwkgICAgIGNkY2xrLCBkZXZf cHJpdi0+Y2RjbGsuaHcucmVmKTsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdTgg Ynh0X2NhbGNfdm9sdGFnZV9sZXZlbChpbnQgY2RjbGspCj4gQEAgLTEyMjAsNTIgKzEyODAsNiBA QCBzdGF0aWMgdTggZWhsX2NhbGNfdm9sdGFnZV9sZXZlbChpbnQgY2RjbGspCj4gIAkJcmV0dXJu IDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgYnh0X2RlX3BsbF92Y28oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgY2RjbGspCj4gLXsKPiAtCWludCByYXRpbzsKPiAtCj4g LQlpZiAoY2RjbGsgPT0gZGV2X3ByaXYtPmNkY2xrLmh3LmJ5cGFzcykKPiAtCQlyZXR1cm4gMDsK PiAtCj4gLQlzd2l0Y2ggKGNkY2xrKSB7Cj4gLQlkZWZhdWx0Ogo+IC0JCU1JU1NJTkdfQ0FTRShj ZGNsayk7Cj4gLQkJLyogZmFsbCB0aHJvdWdoICovCj4gLQljYXNlIDE0NDAwMDoKPiAtCWNhc2Ug Mjg4MDAwOgo+IC0JY2FzZSAzODQwMDA6Cj4gLQljYXNlIDU3NjAwMDoKPiAtCQlyYXRpbyA9IDYw Owo+IC0JCWJyZWFrOwo+IC0JY2FzZSA2MjQwMDA6Cj4gLQkJcmF0aW8gPSA2NTsKPiAtCQlicmVh azsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAqIHJhdGlvOwo+ IC19Cj4gLQo+IC1zdGF0aWMgaW50IGdsa19kZV9wbGxfdmNvKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgaW50IGNkY2xrKQo+IC17Cj4gLQlpbnQgcmF0aW87Cj4gLQo+IC0JaWYg KGNkY2xrID09IGRldl9wcml2LT5jZGNsay5ody5ieXBhc3MpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+ IC0Jc3dpdGNoIChjZGNsaykgewo+IC0JZGVmYXVsdDoKPiAtCQlNSVNTSU5HX0NBU0UoY2RjbGsp Owo+IC0JCS8qIGZhbGwgdGhyb3VnaCAqLwo+IC0JY2FzZSAgNzkyMDA6Cj4gLQljYXNlIDE1ODQw MDoKPiAtCWNhc2UgMzE2ODAwOgo+IC0JCXJhdGlvID0gMzM7Cj4gLQkJYnJlYWs7Cj4gLQl9Cj4g LQo+IC0JcmV0dXJuIGRldl9wcml2LT5jZGNsay5ody5yZWYgKiByYXRpbzsKPiAtfQo+IC0KPiAg c3RhdGljIHZvaWQgY25sX3JlYWRvdXRfcmVmY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3Rh dGUpCj4gIHsKPiBAQCAtMTU3NiwxMyArMTU5MCw4IEBAIHN0YXRpYyB2b2lkIGJ4dF9pbml0X2Nk Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCSAqIC0gVGhlIGluaXRp YWwgQ0RDTEsgbmVlZHMgdG8gYmUgcmVhZCBmcm9tIFZCVC4KPiAgCSAqICAgTmVlZCB0byBtYWtl IHRoaXMgY2hhbmdlIGFmdGVyIFZCVCBoYXMgY2hhbmdlcyBmb3IgQlhULgo+ICAJICovCj4gLQlp ZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAtCQljZGNsa19zdGF0ZS5jZGNsayA9IGds a19jYWxjX2NkY2xrKDApOwo+IC0JCWNkY2xrX3N0YXRlLnZjbyA9IGdsa19kZV9wbGxfdmNvKGRl dl9wcml2LCBjZGNsa19zdGF0ZS5jZGNsayk7Cj4gLQl9IGVsc2Ugewo+IC0JCWNkY2xrX3N0YXRl LmNkY2xrID0gYnh0X2NhbGNfY2RjbGsoMCk7Cj4gLQkJY2RjbGtfc3RhdGUudmNvID0gYnh0X2Rl X3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrX3N0YXRlLmNkY2xrKTsKPiAtCX0KPiArCWNkY2xrX3N0 YXRlLmNkY2xrID0gYnh0X2NhbGNfY2RjbGsoZGV2X3ByaXYsIDApOwo+ICsJY2RjbGtfc3RhdGUu dmNvID0gYnh0X2NhbGNfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGtfc3RhdGUuY2RjbGsp Owo+ICAJY2RjbGtfc3RhdGUudm9sdGFnZV9sZXZlbCA9IGJ4dF9jYWxjX3ZvbHRhZ2VfbGV2ZWwo Y2RjbGtfc3RhdGUuY2RjbGspOwo+ICAKPiAgCWJ4dF9zZXRfY2RjbGsoZGV2X3ByaXYsICZjZGNs a19zdGF0ZSwgSU5WQUxJRF9QSVBFKTsKPiBAQCAtMTU5OSwxNiArMTYwOCw2IEBAIHN0YXRpYyB2 b2lkIGJ4dF91bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJYnh0X3NldF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlLCBJTlZBTElEX1BJUEUpOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGNubF9jYWxjX2NkY2xrKGludCBtaW5fY2RjbGspCj4gLXsK PiAtCWlmIChtaW5fY2RjbGsgPiAzMzYwMDApCj4gLQkJcmV0dXJuIDUyODAwMDsKPiAtCWVsc2Ug aWYgKG1pbl9jZGNsayA+IDE2ODAwMCkKPiAtCQlyZXR1cm4gMzM2MDAwOwo+IC0JZWxzZQo+IC0J CXJldHVybiAxNjgwMDA7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGNubF9jZGNsa19wbGxfZGlz YWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXUzMiB2YWw7 Cj4gQEAgLTE3MTgsMjkgKzE3MTcsNiBAQCBzdGF0aWMgdm9pZCBjbmxfc2V0X2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWRldl9wcml2LT5jZGNsay5ody52b2x0 YWdlX2xldmVsID0gY2RjbGtfc3RhdGUtPnZvbHRhZ2VfbGV2ZWw7Cj4gIH0KPiAgCj4gLXN0YXRp YyBpbnQgY25sX2NkY2xrX3BsbF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBpbnQgY2RjbGspCj4gLXsKPiAtCWludCByYXRpbzsKPiAtCj4gLQlpZiAoY2RjbGsgPT0gZGV2 X3ByaXYtPmNkY2xrLmh3LmJ5cGFzcykKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlzd2l0Y2ggKGNk Y2xrKSB7Cj4gLQlkZWZhdWx0Ogo+IC0JCU1JU1NJTkdfQ0FTRShjZGNsayk7Cj4gLQkJLyogZmFs bCB0aHJvdWdoICovCj4gLQljYXNlIDE2ODAwMDoKPiAtCWNhc2UgMzM2MDAwOgo+IC0JCXJhdGlv ID0gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiA9PSAxOTIwMCA/IDM1IDogMjg7Cj4gLQkJYnJlYWs7 Cj4gLQljYXNlIDUyODAwMDoKPiAtCQlyYXRpbyA9IGRldl9wcml2LT5jZGNsay5ody5yZWYgPT0g MTkyMDAgPyA1NSA6IDQ0Owo+IC0JCWJyZWFrOwo+IC0JfQo+IC0KPiAtCXJldHVybiBkZXZfcHJp di0+Y2RjbGsuaHcucmVmICogcmF0aW87Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGNubF9zYW5p dGl6ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXUz MiBjZGN0bCwgZXhwZWN0ZWQ7Cj4gQEAgLTE3ODMsNzcgKzE3NTksNiBAQCBzdGF0aWMgdm9pZCBj bmxfc2FuaXRpemVfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ ZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyA9IC0xOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGljbF9j YWxjX2NkY2xrKGludCBtaW5fY2RjbGssIHVuc2lnbmVkIGludCByZWYpCj4gLXsKPiAtCXN0YXRp YyBjb25zdCBpbnQgcmFuZ2VzXzI0W10gPSB7IDE4MDAwMCwgMTkyMDAwLCAzMTIwMDAsIDMyNDAw MCwKPiAtCQkJCQkgNTUyMDAwLCA2NDgwMDAgfTsKPiAtCXN0YXRpYyBjb25zdCBpbnQgcmFuZ2Vz XzE5XzM4W10gPSB7IDE3MjgwMCwgMTkyMDAwLCAzMDcyMDAsIDMyNjQwMCwKPiAtCQkJCQkgICAg NTU2ODAwLCA2NTI4MDAgfTsKPiAtCWNvbnN0IGludCAqcmFuZ2VzOwo+IC0JaW50IGxlbiwgaTsK PiAtCj4gLQlzd2l0Y2ggKHJlZikgewo+IC0JZGVmYXVsdDoKPiAtCQlNSVNTSU5HX0NBU0UocmVm KTsKPiAtCQkvKiBmYWxsIHRocm91Z2ggKi8KPiAtCWNhc2UgMjQwMDA6Cj4gLQkJcmFuZ2VzID0g cmFuZ2VzXzI0Owo+IC0JCWxlbiA9IEFSUkFZX1NJWkUocmFuZ2VzXzI0KTsKPiAtCQlicmVhazsK PiAtCWNhc2UgMTkyMDA6Cj4gLQljYXNlIDM4NDAwOgo+IC0JCXJhbmdlcyA9IHJhbmdlc18xOV8z ODsKPiAtCQlsZW4gPSBBUlJBWV9TSVpFKHJhbmdlc18xOV8zOCk7Cj4gLQkJYnJlYWs7Cj4gLQl9 Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Cj4gLQkJaWYgKG1pbl9jZGNsayA8 PSByYW5nZXNbaV0pCj4gLQkJCXJldHVybiByYW5nZXNbaV07Cj4gLQl9Cj4gLQo+IC0JV0FSTl9P TihtaW5fY2RjbGsgPiByYW5nZXNbbGVuIC0gMV0pOwo+IC0JcmV0dXJuIHJhbmdlc1tsZW4gLSAx XTsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBpY2xfY2FsY19jZGNsa19wbGxfdmNvKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGNkY2xrKQo+IC17Cj4gLQlpbnQgcmF0aW87 Cj4gLQo+IC0JaWYgKGNkY2xrID09IGRldl9wcml2LT5jZGNsay5ody5ieXBhc3MpCj4gLQkJcmV0 dXJuIDA7Cj4gLQo+IC0Jc3dpdGNoIChjZGNsaykgewo+IC0JZGVmYXVsdDoKPiAtCQlNSVNTSU5H X0NBU0UoY2RjbGspOwo+IC0JCS8qIGZhbGwgdGhyb3VnaCAqLwo+IC0JY2FzZSAxNzI4MDA6Cj4g LQljYXNlIDMwNzIwMDoKPiAtCWNhc2UgMzI2NDAwOgo+IC0JY2FzZSA1NTY4MDA6Cj4gLQljYXNl IDY1MjgwMDoKPiAtCQlXQVJOX09OKGRldl9wcml2LT5jZGNsay5ody5yZWYgIT0gMTkyMDAgJiYK PiAtCQkJZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAhPSAzODQwMCk7Cj4gLQkJYnJlYWs7Cj4gLQlj YXNlIDE4MDAwMDoKPiAtCWNhc2UgMzEyMDAwOgo+IC0JY2FzZSAzMjQwMDA6Cj4gLQljYXNlIDU1 MjAwMDoKPiAtCWNhc2UgNjQ4MDAwOgo+IC0JCVdBUk5fT04oZGV2X3ByaXYtPmNkY2xrLmh3LnJl ZiAhPSAyNDAwMCk7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIDE5MjAwMDoKPiAtCQlXQVJOX09OKGRl dl9wcml2LT5jZGNsay5ody5yZWYgIT0gMTkyMDAgJiYKPiAtCQkJZGV2X3ByaXYtPmNkY2xrLmh3 LnJlZiAhPSAzODQwMCAmJgo+IC0JCQlkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICE9IDI0MDAwKTsK PiAtCQlicmVhazsKPiAtCX0KPiAtCj4gLQlyYXRpbyA9IGNkY2xrIC8gKGRldl9wcml2LT5jZGNs ay5ody5yZWYgLyAyKTsKPiAtCj4gLQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAqIHJh dGlvOwo+IC19Cj4gLQo+ICBzdGF0aWMgdm9pZCBpY2xfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBz YW5pdGl6ZWRfc3RhdGU7Cj4gQEAgLTE4ODIsOCArMTc4Nyw4IEBAIHN0YXRpYyB2b2lkIGljbF9p bml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCURSTV9ERUJV R19LTVMoIlNhbml0aXppbmcgY2RjbGsgcHJvZ3JhbW1lZCBieSBwcmUtb3NcbiIpOwo+ICAKPiAg CXNhbml0aXplZF9zdGF0ZS5yZWYgPSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmOwo+IC0Jc2FuaXRp emVkX3N0YXRlLmNkY2xrID0gaWNsX2NhbGNfY2RjbGsoMCwgc2FuaXRpemVkX3N0YXRlLnJlZik7 Cj4gLQlzYW5pdGl6ZWRfc3RhdGUudmNvID0gaWNsX2NhbGNfY2RjbGtfcGxsX3ZjbyhkZXZfcHJp diwKPiArCXNhbml0aXplZF9zdGF0ZS5jZGNsayA9IGJ4dF9jYWxjX2NkY2xrKGRldl9wcml2LCAw KTsKPiArCXNhbml0aXplZF9zdGF0ZS52Y28gPSBieHRfY2FsY19jZGNsa19wbGxfdmNvKGRldl9w cml2LAo+ICAJCQkJCQkgICAgIHNhbml0aXplZF9zdGF0ZS5jZGNsayk7Cj4gIAlpZiAoSVNfRUxL SEFSVExBS0UoZGV2X3ByaXYpKQo+ICAJCXNhbml0aXplZF9zdGF0ZS52b2x0YWdlX2xldmVsID0K PiBAQCAtMTkyMyw4ICsxODI4LDggQEAgc3RhdGljIHZvaWQgY25sX2luaXRfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCWNkY2xrX3N0YXRlID0gZGV2X3By aXYtPmNkY2xrLmh3Owo+ICAKPiAtCWNkY2xrX3N0YXRlLmNkY2xrID0gY25sX2NhbGNfY2RjbGso MCk7Cj4gLQljZGNsa19zdGF0ZS52Y28gPSBjbmxfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2Rj bGtfc3RhdGUuY2RjbGspOwo+ICsJY2RjbGtfc3RhdGUuY2RjbGsgPSBieHRfY2FsY19jZGNsayhk ZXZfcHJpdiwgMCk7Cj4gKwljZGNsa19zdGF0ZS52Y28gPSBieHRfY2FsY19jZGNsa19wbGxfdmNv KGRldl9wcml2LCBjZGNsa19zdGF0ZS5jZGNsayk7Cj4gIAljZGNsa19zdGF0ZS52b2x0YWdlX2xl dmVsID0gY25sX2NhbGNfdm9sdGFnZV9sZXZlbChjZGNsa19zdGF0ZS5jZGNsayk7Cj4gIAo+ICAJ Y25sX3NldF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlLCBJTlZBTElEX1BJUEUpOwo+IEBA IC0yNDI2LDEzICsyMzMxLDggQEAgc3RhdGljIGludCBieHRfbW9kZXNldF9jYWxjX2NkY2xrKHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJaWYgKG1pbl9jZGNsayA8IDApCj4g IAkJcmV0dXJuIG1pbl9jZGNsazsKPiAgCj4gLQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikp IHsKPiAtCQljZGNsayA9IGdsa19jYWxjX2NkY2xrKG1pbl9jZGNsayk7Cj4gLQkJdmNvID0gZ2xr X2RlX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKPiAtCX0gZWxzZSB7Cj4gLQkJY2RjbGsgPSBi eHRfY2FsY19jZGNsayhtaW5fY2RjbGspOwo+IC0JCXZjbyA9IGJ4dF9kZV9wbGxfdmNvKGRldl9w cml2LCBjZGNsayk7Cj4gLQl9Cj4gKwljZGNsayA9IGJ4dF9jYWxjX2NkY2xrKGRldl9wcml2LCBt aW5fY2RjbGspOwo+ICsJdmNvID0gYnh0X2NhbGNfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2Rj bGspOwo+ICAKPiAgCXN0YXRlLT5jZGNsay5sb2dpY2FsLnZjbyA9IHZjbzsKPiAgCXN0YXRlLT5j ZGNsay5sb2dpY2FsLmNkY2xrID0gY2RjbGs7Cj4gQEAgLTI0NDAsMTMgKzIzNDAsOCBAQCBzdGF0 aWMgaW50IGJ4dF9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUpCj4gIAkJYnh0X2NhbGNfdm9sdGFnZV9sZXZlbChjZGNsayk7Cj4gIAo+ICAJaWYgKCFz dGF0ZS0+YWN0aXZlX3BpcGVzKSB7Cj4gLQkJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7 Cj4gLQkJCWNkY2xrID0gZ2xrX2NhbGNfY2RjbGsoc3RhdGUtPmNkY2xrLmZvcmNlX21pbl9jZGNs ayk7Cj4gLQkJCXZjbyA9IGdsa19kZV9wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7Cj4gLQkJfSBl bHNlIHsKPiAtCQkJY2RjbGsgPSBieHRfY2FsY19jZGNsayhzdGF0ZS0+Y2RjbGsuZm9yY2VfbWlu X2NkY2xrKTsKPiAtCQkJdmNvID0gYnh0X2RlX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKPiAt CQl9Cj4gKwkJY2RjbGsgPSBieHRfY2FsY19jZGNsayhkZXZfcHJpdiwgc3RhdGUtPmNkY2xrLmZv cmNlX21pbl9jZGNsayk7Cj4gKwkJdmNvID0gYnh0X2NhbGNfY2RjbGtfcGxsX3ZjbyhkZXZfcHJp diwgY2RjbGspOwo+ICAKPiAgCQlzdGF0ZS0+Y2RjbGsuYWN0dWFsLnZjbyA9IHZjbzsKPiAgCQlz dGF0ZS0+Y2RjbGsuYWN0dWFsLmNkY2xrID0gY2RjbGs7Cj4gQEAgLTI0NjgsOCArMjM2Myw4IEBA IHN0YXRpYyBpbnQgY25sX21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSkKPiAgCWlmIChtaW5fY2RjbGsgPCAwKQo+ICAJCXJldHVybiBtaW5fY2RjbGs7 Cj4gIAo+IC0JY2RjbGsgPSBjbmxfY2FsY19jZGNsayhtaW5fY2RjbGspOwo+IC0JdmNvID0gY25s X2NkY2xrX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKPiArCWNkY2xrID0gYnh0X2NhbGNfY2Rj bGsoZGV2X3ByaXYsIG1pbl9jZGNsayk7Cj4gKwl2Y28gPSBieHRfY2FsY19jZGNsa19wbGxfdmNv KGRldl9wcml2LCBjZGNsayk7Cj4gIAo+ICAJc3RhdGUtPmNkY2xrLmxvZ2ljYWwudmNvID0gdmNv Owo+ICAJc3RhdGUtPmNkY2xrLmxvZ2ljYWwuY2RjbGsgPSBjZGNsazsKPiBAQCAtMjQ3OCw4ICsy MzczLDggQEAgc3RhdGljIGludCBjbmxfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJCSAgICBjbmxfY29tcHV0ZV9taW5fdm9sdGFnZV9sZXZl bChzdGF0ZSkpOwo+ICAKPiAgCWlmICghc3RhdGUtPmFjdGl2ZV9waXBlcykgewo+IC0JCWNkY2xr ID0gY25sX2NhbGNfY2RjbGsoc3RhdGUtPmNkY2xrLmZvcmNlX21pbl9jZGNsayk7Cj4gLQkJdmNv ID0gY25sX2NkY2xrX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKPiArCQljZGNsayA9IGJ4dF9j YWxjX2NkY2xrKGRldl9wcml2LCBzdGF0ZS0+Y2RjbGsuZm9yY2VfbWluX2NkY2xrKTsKPiArCQl2 Y28gPSBieHRfY2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7Cj4gIAo+ICAJCXN0 YXRlLT5jZGNsay5hY3R1YWwudmNvID0gdmNvOwo+ICAJCXN0YXRlLT5jZGNsay5hY3R1YWwuY2Rj bGsgPSBjZGNsazsKPiBAQCAtMjQ5NSwxNSArMjM5MCwxNCBAQCBzdGF0aWMgaW50IGNubF9tb2Rl c2V0X2NhbGNfY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHN0YXRp YyBpbnQgaWNsX21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShzdGF0ZS0+YmFzZS5kZXYpOwo+IC0JdW5zaWduZWQgaW50IHJlZiA9IHN0YXRlLT5jZGNsay5s b2dpY2FsLnJlZjsKPiAgCWludCBtaW5fY2RjbGssIGNkY2xrLCB2Y287Cj4gIAo+ICAJbWluX2Nk Y2xrID0gaW50ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RhdGUpOwo+ICAJaWYgKG1pbl9jZGNsayA8 IDApCj4gIAkJcmV0dXJuIG1pbl9jZGNsazsKPiAgCj4gLQljZGNsayA9IGljbF9jYWxjX2NkY2xr KG1pbl9jZGNsaywgcmVmKTsKPiAtCXZjbyA9IGljbF9jYWxjX2NkY2xrX3BsbF92Y28oZGV2X3By aXYsIGNkY2xrKTsKPiArCWNkY2xrID0gYnh0X2NhbGNfY2RjbGsoZGV2X3ByaXYsIG1pbl9jZGNs ayk7Cj4gKwl2Y28gPSBieHRfY2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7Cj4g IAo+ICAJc3RhdGUtPmNkY2xrLmxvZ2ljYWwudmNvID0gdmNvOwo+ICAJc3RhdGUtPmNkY2xrLmxv Z2ljYWwuY2RjbGsgPSBjZGNsazsKPiBAQCAtMjUxNyw4ICsyNDExLDggQEAgc3RhdGljIGludCBp Y2xfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ ICAJCQkgICAgY25sX2NvbXB1dGVfbWluX3ZvbHRhZ2VfbGV2ZWwoc3RhdGUpKTsKPiAgCj4gIAlp ZiAoIXN0YXRlLT5hY3RpdmVfcGlwZXMpIHsKPiAtCQljZGNsayA9IGljbF9jYWxjX2NkY2xrKHN0 YXRlLT5jZGNsay5mb3JjZV9taW5fY2RjbGssIHJlZik7Cj4gLQkJdmNvID0gaWNsX2NhbGNfY2Rj bGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOwo+ICsJCWNkY2xrID0gYnh0X2NhbGNfY2RjbGso ZGV2X3ByaXYsIHN0YXRlLT5jZGNsay5mb3JjZV9taW5fY2RjbGspOwo+ICsJCXZjbyA9IGJ4dF9j YWxjX2NkY2xrX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKPiAgCj4gIAkJc3RhdGUtPmNkY2xr LmFjdHVhbC52Y28gPSB2Y287Cj4gIAkJc3RhdGUtPmNkY2xrLmFjdHVhbC5jZGNsayA9IGNkY2xr Owo+IEBAIC0yNzU0LDEyICsyNjQ4LDE1IEBAIHZvaWQgaW50ZWxfaW5pdF9jZGNsa19ob29rcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSAxMSkgewo+ICAJCWRldl9wcml2LT5kaXNwbGF5LnNldF9jZGNsayA9IGNubF9zZXRf Y2RjbGs7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0gaWNsX21v ZGVzZXRfY2FsY19jZGNsazsKPiArCQlkZXZfcHJpdi0+Y2RjbGsudGFibGUgPSBpY2xfY2RjbGtf dGFibGU7Cj4gIAl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7Cj4gIAkJZGV2 X3ByaXYtPmRpc3BsYXkuc2V0X2NkY2xrID0gY25sX3NldF9jZGNsazsKPiAgCQlkZXZfcHJpdi0+ ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPSBjbmxfbW9kZXNldF9jYWxjX2NkY2xrOwo+ICsJ CWRldl9wcml2LT5jZGNsay50YWJsZSA9IGNubF9jZGNsa190YWJsZTsKPiAgCX0gZWxzZSBpZiAo SVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfY2RjbGsg PSBieHRfc2V0X2NkY2xrOwo+ICAJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNs ayA9IGJ4dF9tb2Rlc2V0X2NhbGNfY2RjbGs7Cj4gKwkJZGV2X3ByaXYtPmNkY2xrLnRhYmxlID0g Ynh0X2NkY2xrX3RhYmxlOwo+ICAJfSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewo+ ICAJCWRldl9wcml2LT5kaXNwbGF5LnNldF9jZGNsayA9IHNrbF9zZXRfY2RjbGs7Cj4gIAkJZGV2 X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0gc2tsX21vZGVzZXRfY2FsY19jZGNs azsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNs ay5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5oCj4gaW5kZXgg NGQ2ZjdmNWY4OTMwLi5jYTZkNjUxOTQ2YjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9jZGNsay5oCj4gQEAgLTE1LDYgKzE1LDEzIEBAIHN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGU7Cj4gIHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZTsKPiAgc3RydWN0IGludGVs X2NydGNfc3RhdGU7Cj4gIAo+ICtzdHJ1Y3QgaW50ZWxfY2RjbGtfdmFscyB7Cj4gKwl1MzIgcmVm Y2xrOwo+ICsJdTMyIGNkY2xrOwo+ICsJdTggZGl2aWRlcjsJLyogQ0QyWCBkaXZpZGVyICogMiAq Lwo+ICsJdTggcmF0aW87Cj4gK307Cj4gKwo+ICBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX21pbl9j ZGNsayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gIHZvaWQg aW50ZWxfY2RjbGtfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gIHZvaWQg aW50ZWxfY2RjbGtfdW5pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBlMjg5YjRmZmQzNGIuLmZmNmFmZjJhNDg2NiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xNDIwLDYgKzE0MjAsOSBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAkJLyogVGhlIGN1cnJlbnQgaGFyZHdhcmUgY2RjbGsgc3Rh dGUgKi8KPiAgCQlzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgaHc7Cj4gIAo+ICsJCS8qIGNkY2xr LCBkaXZpZGVyLCBhbmQgcmF0aW8gdGFibGUgZnJvbSBic3BlYyAqLwo+ICsJCWNvbnN0IHN0cnVj dCBpbnRlbF9jZGNsa192YWxzICp0YWJsZTsKPiArCj4gIAkJaW50IGZvcmNlX21pbl9jZGNsazsK PiAgCX0gY2RjbGs7Cj4gIAo+IC0tIAo+IDIuMjAuMQoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRl bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=