From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [RFC PATCH 06/31] cpufreq: make cpufreq driver more generalizable Date: Mon, 4 Dec 2017 14:46:34 -0800 (PST) Message-ID: References: <1510247421-24094-1-git-send-email-olekstysh@gmail.com> <1510247421-24094-7-git-send-email-olekstysh@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eLzVX-000686-FK for xen-devel@lists.xenproject.org; Mon, 04 Dec 2017 22:46:39 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Oleksandr Tyshchenko Cc: Stefano Stabellini , Andrew Cooper , Oleksandr Dmytryshyn , Julien Grall , Oleksandr Tyshchenko , Jan Beulich , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gTW9uLCA0IERlYyAyMDE3LCBPbGVrc2FuZHIgVHlzaGNoZW5rbyB3cm90ZToKPiBIaSwgU3Rl ZmFubwo+IAo+IE9uIFNhdCwgRGVjIDIsIDIwMTcgYXQgMzozNyBBTSwgU3RlZmFubyBTdGFiZWxs aW5pCj4gPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4gT24gVGh1LCA5IE5vdiAy MDE3LCBPbGVrc2FuZHIgVHlzaGNoZW5rbyB3cm90ZToKPiA+PiBGcm9tOiBPbGVrc2FuZHIgRG15 dHJ5c2h5biA8b2xla3NhbmRyLmRteXRyeXNoeW5AZ2xvYmFsbG9naWMuY29tPgo+ID4+Cj4gPj4g Rmlyc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNwdWZyZXEgZHJpdmVyIGhhcyBiZWVuCj4gPj4g d3JpdHRlbiB3aXRoIHg4NiBpbiBtaW5kLiBUaGlzIHBhdGNoIG1ha2VzIHBvc3NpYmxlCj4gPj4g dGhlIGNwdWZyZXEgZHJpdmVyIGJlIHdvcmtpbmcgb24gYm90aCB4ODYgYW5kIGFybQo+ID4+IGFy Y2hpdGVjdHVyZXMuCj4gPj4KPiA+PiBUaGlzIGlzIGEgcmViYXNlZCB2ZXJzaW9uIG9mIHRoZSBv cmlnaW5hbCBwYXRjaDoKPiA+PiBodHRwczovL2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94 ZW4tZGV2ZWwvMjAxNC0xMS9tc2cwMDkzMi5odG1sCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBP bGVrc2FuZHIgRG15dHJ5c2h5biA8b2xla3NhbmRyLmRteXRyeXNoeW5AZ2xvYmFsbG9naWMuY29t Pgo+ID4+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBUeXNoY2hlbmtvIDxvbGVrc2FuZHJfdHlz aGNoZW5rb0BlcGFtLmNvbT4KPiA+PiBDQzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29t Pgo+ID4+IENDOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+ID4+ IENDOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Cj4gPj4gQ0M6 IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGxpbmFyby5vcmc+Cj4gPj4gLS0tCj4gPj4gIHhl bi9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcS5jICAgIHwgODEgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLQo+ID4+ICB4ZW4vaW5jbHVkZS9wdWJsaWMvcGxhdGZvcm0uaCAg ICB8ICAxICsKPiA+PiAgeGVuL2luY2x1ZGUveGVuL3Byb2Nlc3Nvcl9wZXJmLmggfCAgNiArKysK PiA+PiAgMyBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+ ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcS5jIGIveGVu L2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxLmMKPiA+PiBpbmRleCBhYjkwOWUyLi42NGUxYWU3IDEw MDY0NAo+ID4+IC0tLSBhL3hlbi9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcS5jCj4gPj4gKysrIGIv eGVuL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxLmMKPiA+PiBAQCAtNDIsNyArNDIsNiBAQAo+ID4+ ICAjaW5jbHVkZSA8YXNtL2lvLmg+Cj4gPj4gICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+Cj4g Pj4gICNpbmNsdWRlIDxhc20vcGVyY3B1Lmg+Cj4gPj4gLSNpbmNsdWRlIDxhY3BpL2FjcGkuaD4K PiA+PiAgI2luY2x1ZGUgPHhlbi9jcHVmcmVxLmg+Cj4gPj4KPiA+PiAgc3RhdGljIHVuc2lnbmVk IGludCBfX3JlYWRfbW9zdGx5IHVzcl9taW5fZnJlcTsKPiA+PiBAQCAtMjA2LDYgKzIwNSw3IEBA IGludCBjcHVmcmVxX2FkZF9jcHUodW5zaWduZWQgaW50IGNwdSkKPiA+PiAgICAgIH0gZWxzZSB7 Cj4gPj4gICAgICAgICAgLyogZG9tYWluIHNhbml0eSBjaGVjayB1bmRlciB3aGF0ZXZlciBjb29y ZGluYXRpb24gdHlwZSAqLwo+ID4+ICAgICAgICAgIGZpcnN0Y3B1ID0gY3B1bWFza19maXJzdChj cHVmcmVxX2RvbS0+bWFwKTsKPiA+PiArI2lmZGVmIENPTkZJR19BQ1BJCj4gPj4gICAgICAgICAg aWYgKChwZXJmLT5kb21haW5faW5mby5jb29yZF90eXBlICE9Cj4gPj4gICAgICAgICAgICAgIHBy b2Nlc3Nvcl9wbWluZm9bZmlyc3RjcHVdLT5wZXJmLmRvbWFpbl9pbmZvLmNvb3JkX3R5cGUpIHx8 Cj4gPj4gICAgICAgICAgICAgIChwZXJmLT5kb21haW5faW5mby5udW1fcHJvY2Vzc29ycyAhPQo+ ID4+IEBAIC0yMjEsNiArMjIxLDE5IEBAIGludCBjcHVmcmVxX2FkZF9jcHUodW5zaWduZWQgaW50 IGNwdSkKPiA+PiAgICAgICAgICAgICAgICAgICk7Cj4gPj4gICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOwo+ID4+ICAgICAgICAgIH0KPiA+PiArI2Vsc2UgLyogIUNPTkZJR19BQ1BJICovCj4g Pj4gKyAgICAgICAgaWYgKChwZXJmLT5kb21haW5faW5mby5udW1fcHJvY2Vzc29ycyAhPQo+ID4+ ICsgICAgICAgICAgICBwcm9jZXNzb3JfcG1pbmZvW2ZpcnN0Y3B1XS0+cGVyZi5kb21haW5faW5m by5udW1fcHJvY2Vzc29ycykpIHsKPiA+PiArCj4gPj4gKyAgICAgICAgICAgIHByaW50ayhLRVJO X1dBUk5JTkcgImNwdWZyZXEgZmFpbCB0byBhZGQgQ1BVJWQ6Igo+ID4+ICsgICAgICAgICAgICAg ICAgICAgImluY29ycmVjdCBudW0gcHJvY2Vzc29ycyAoJSJQUkl1NjQiKSwgIgo+ID4+ICsgICAg ICAgICAgICAgICAgICAgImV4cGVjdCglIlBSSXU2NCIpXG4iLAo+ID4+ICsgICAgICAgICAgICAg ICAgICAgY3B1LCBwZXJmLT5kb21haW5faW5mby5udW1fcHJvY2Vzc29ycywKPiA+PiArICAgICAg ICAgICAgICAgICAgIHByb2Nlc3Nvcl9wbWluZm9bZmlyc3RjcHVdLT5wZXJmLmRvbWFpbl9pbmZv Lm51bV9wcm9jZXNzb3JzCj4gPj4gKyAgICAgICAgICAgICAgICApOwo+ID4+ICsgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKPiA+PiArICAgICAgICB9Cj4gPj4gKyNlbmRpZiAvKiBDT05GSUdf QUNQSSAqLwo+ID4KPiA+IFdoeSBpcyB0aGlzIG5lY2Vzc2FyeT8gSSBhbSBhc2tpbmcgdGhpcyBx dWVzdGlvbiwgYmVjYXVzZSBJIHRoaW5rIGl0Cj4gPiB3b3VsZCBiZSBiZXN0IHRvIGF2b2lkIG1v cmUgI2lmZGVmJ3MgaWYgd2UgY2FuIGF2b2lkIHRoZW0sIGFuZCBzb21lIG9mCj4gPiB0aGUgY29k ZSAjaWZkZWYnZWQgZG9lc24ndCBsb29rIHZlcnkgYWNwaSBzcGVjaWZpYyAoYXQgbGVhc3QgYXQg Zmlyc3QKPiA+IHNpZ2h0KS4gSXQgZG9lc24ndCBsb29rIGxpa2UgdGhpcyBjaGFuZ2UgaXMgdmVy eSBiZW5lZmljaWFsLiBXaGF0IGFtIEkKPiA+IG1pc3Npbmc/Cj4gCj4gUHJvYmFibHksIHRoZSBv cmlnaW5hbCBhdXRob3Igb2YgdGhpcyBwYXRjaCB3YW50ZWQgdG8gYXZvaWQgcGxheWluZwo+IHdp dGggc29tZSBzdHVmZiAoY29kZSAmIHZhcmlhYmxlcykgd2hpY2ggZGlkbid0IG1ha2Ugc2Vuc2Uv d291bGRuJ3QgYmUKPiB1c2VkIG9uIG5vbi1BQ1BJIHN5c3RlbXMuCj4gCj4gQWdyZWUgaGVyZSwg d2UgYXJlIGFibGUgdG8gYXZvaWQgdGhpcyAjaWZkZWYgYXMgd2VsbCBhcyBtYW55IG90aGVycy4g SQo+IGRvbid0IHNlZSBhbiBpc3N1ZSwgZm9yIGV4YW1wbGUsIHRvIHByaW50IHNvbWV0aGluZyBk ZWZhdWx0aW5nIGZvcgo+IGNvb3JkX3R5cGUvbnVtX2VudHJpZXMvcmV2aXNpb24vZXRjLgoKSSBh Z3JlZQoKCj4gPgo+ID4KPiA+PiAgICAgIH0KPiA+Pgo+ID4+ICAgICAgaWYgKCFkb21leGlzdCB8 fCBod19hbGwpIHsKPiA+PiBAQCAtMzgwLDYgKzM5Myw3IEBAIGludCBjcHVmcmVxX2RlbF9jcHUo dW5zaWduZWQgaW50IGNwdSkKPiA+PiAgICAgIHJldHVybiAwOwo+ID4+ICB9Cj4gPj4KPiA+PiAr I2lmZGVmIENPTkZJR19BQ1BJCj4gPj4gIHN0YXRpYyB2b2lkIHByaW50X1BDVChzdHJ1Y3QgeGVu X3BjdF9yZWdpc3RlciAqcHRyKQo+ID4+ICB7Cj4gPj4gICAgICBwcmludGsoIlx0X1BDVDogZGVz Y3JpcHRvcj0lZCwgbGVuZ3RoPSVkLCBzcGFjZV9pZD0lZCwgIgo+ID4+IEBAIC0zODcsMTIgKzQw MSwxNCBAQCBzdGF0aWMgdm9pZCBwcmludF9QQ1Qoc3RydWN0IHhlbl9wY3RfcmVnaXN0ZXIgKnB0 cikKPiA+PiAgICAgICAgICAgICBwdHItPmRlc2NyaXB0b3IsIHB0ci0+bGVuZ3RoLCBwdHItPnNw YWNlX2lkLCBwdHItPmJpdF93aWR0aCwKPiA+PiAgICAgICAgICAgICBwdHItPmJpdF9vZmZzZXQs IHB0ci0+cmVzZXJ2ZWQsIHB0ci0+YWRkcmVzcyk7Cj4gPj4gIH0KPiA+PiArI2VuZGlmIC8qIENP TkZJR19BQ1BJICovCj4gPgo+ID4gc2FtZSBxdWVzdGlvbgo+IAo+IGRlZmluaXRlbHkgb21pdCAj aWZkZWYKPiAKPiA+Cj4gPgo+ID4+ICBzdGF0aWMgdm9pZCBwcmludF9QU1Moc3RydWN0IHhlbl9w cm9jZXNzb3JfcHggKnB0ciwgaW50IGNvdW50KQo+ID4+ICB7Cj4gPj4gICAgICBpbnQgaTsKPiA+ PiAgICAgIHByaW50aygiXHRfUFNTOiBzdGF0ZV9jb3VudD0lZFxuIiwgY291bnQpOwo+ID4+ICAg ICAgZm9yIChpPTA7IGk8Y291bnQ7IGkrKyl7Cj4gPj4gKyNpZmRlZiBDT05GSUdfQUNQSQo+ID4+ ICAgICAgICAgIHByaW50aygiXHRTdGF0ZSVkOiAlIlBSSWQ2NCJNSHogJSJQUklkNjQibVcgJSJQ UklkNjQidXMgIgo+ID4+ICAgICAgICAgICAgICAgICAiJSJQUklkNjQidXMgJSMiUFJJeDY0IiAl IyJQUkl4NjQiXG4iLAo+ID4+ICAgICAgICAgICAgICAgICBpLAo+ID4+IEBAIC00MDIsMTUgKzQx OCwyNiBAQCBzdGF0aWMgdm9pZCBwcmludF9QU1Moc3RydWN0IHhlbl9wcm9jZXNzb3JfcHggKnB0 ciwgaW50IGNvdW50KQo+ID4+ICAgICAgICAgICAgICAgICBwdHJbaV0uYnVzX21hc3Rlcl9sYXRl bmN5LAo+ID4+ICAgICAgICAgICAgICAgICBwdHJbaV0uY29udHJvbCwKPiA+PiAgICAgICAgICAg ICAgICAgcHRyW2ldLnN0YXR1cyk7Cj4gPj4gKyNlbHNlIC8qICFDT05GSUdfQUNQSSAqLwo+ID4+ ICsgICAgICAgIHByaW50aygiXHRTdGF0ZSVkOiAlIlBSSWQ2NCJNSHogJSJQUklkNjQidXNcbiIs Cj4gPj4gKyAgICAgICAgICAgICAgIGksCj4gPj4gKyAgICAgICAgICAgICAgIHB0cltpXS5jb3Jl X2ZyZXF1ZW5jeSwKPiA+PiArICAgICAgICAgICAgICAgcHRyW2ldLnRyYW5zaXRpb25fbGF0ZW5j eSk7Cj4gPj4gKyNlbmRpZiAvKiBDT05GSUdfQUNQSSAqLwo+ID4+ICAgICAgfQo+ID4+ICB9Cj4g Pgo+ID4gc2FtZSBxdWVzdGlvbgo+IAo+IHNhbWUgYW5zd2VyKQo+IAo+ID4KPiA+Cj4gPj4gIHN0 YXRpYyB2b2lkIHByaW50X1BTRCggc3RydWN0IHhlbl9wc2RfcGFja2FnZSAqcHRyKQo+ID4+ICB7 Cj4gPj4gKyNpZmRlZiBDT05GSUdfQUNQSQo+ID4+ICAgICAgcHJpbnRrKCJcdF9QU0Q6IG51bV9l bnRyaWVzPSUiUFJJZDY0IiByZXY9JSJQUklkNjQKPiA+PiAgICAgICAgICAgICAiIGRvbWFpbj0l IlBSSWQ2NCIgY29vcmRfdHlwZT0lIlBSSWQ2NCIgbnVtX3Byb2Nlc3NvcnM9JSJQUklkNjQiXG4i LAo+ID4+ICAgICAgICAgICAgIHB0ci0+bnVtX2VudHJpZXMsIHB0ci0+cmV2aXNpb24sIHB0ci0+ ZG9tYWluLCBwdHItPmNvb3JkX3R5cGUsCj4gPj4gICAgICAgICAgICAgcHRyLT5udW1fcHJvY2Vz c29ycyk7Cj4gPj4gKyNlbHNlIC8qICFDT05GSUdfQUNQSSAqLwo+ID4+ICsgICAgcHJpbnRrKCJc dF9QU0Q6ICBkb21haW49JSJQUklkNjQiIG51bV9wcm9jZXNzb3JzPSUiUFJJZDY0IlxuIiwKPiA+ PiArICAgICAgICAgICBwdHItPmRvbWFpbiwgcHRyLT5udW1fcHJvY2Vzc29ycyk7Cj4gPj4gKyNl bmRpZiAvKiBDT05GSUdfQUNQSSAqLwo+ID4+ICB9Cj4gPgo+ID4gc2FtZSBxdWVzdGlvbgo+IAo+ IHNhbWUgYW5zd2VyKQo+IAo+ID4KPiA+Cj4gPj4gIHN0YXRpYyB2b2lkIHByaW50X1BQQyh1bnNp Z25lZCBpbnQgcGxhdGZvcm1fbGltaXQpCj4gPj4gQEAgLTQxOCwxMyArNDQ1LDUzIEBAIHN0YXRp YyB2b2lkIHByaW50X1BQQyh1bnNpZ25lZCBpbnQgcGxhdGZvcm1fbGltaXQpCj4gPj4gICAgICBw cmludGsoIlx0X1BQQzogJWRcbiIsIHBsYXRmb3JtX2xpbWl0KTsKPiA+PiAgfQo+ID4+Cj4gPj4g K3N0YXRpYyBpbmxpbmUgYm9vbCBpc19wc3NfZGF0YShzdHJ1Y3QgeGVuX3Byb2Nlc3Nvcl9wZXJm b3JtYW5jZSAqcHgpCj4gPj4gK3sKPiA+PiArI2lmZGVmIENPTkZJR19BQ1BJCj4gPj4gKyAgICBy ZXR1cm4gcHgtPmZsYWdzICYgWEVOX1BYX1BTUzsKPiA+PiArI2Vsc2UKPiA+PiArICAgIHJldHVy biBweC0+ZmxhZ3MgPT0gWEVOX1BYX0RBVEE7Cj4gPj4gKyNlbmRpZgo+ID4+ICt9Cj4gPj4gKwo+ ID4+ICtzdGF0aWMgaW5saW5lIGJvb2wgaXNfcHNkX2RhdGEoc3RydWN0IHhlbl9wcm9jZXNzb3Jf cGVyZm9ybWFuY2UgKnB4KQo+ID4+ICt7Cj4gPj4gKyNpZmRlZiBDT05GSUdfQUNQSQo+ID4+ICsg ICAgcmV0dXJuIHB4LT5mbGFncyAmIFhFTl9QWF9QU0Q7Cj4gPj4gKyNlbHNlCj4gPj4gKyAgICBy ZXR1cm4gcHgtPmZsYWdzID09IFhFTl9QWF9EQVRBOwo+ID4+ICsjZW5kaWYKPiA+PiArfQo+ID4+ ICsKPiA+PiArc3RhdGljIGlubGluZSBib29sIGlzX3BwY19kYXRhKHN0cnVjdCB4ZW5fcHJvY2Vz c29yX3BlcmZvcm1hbmNlICpweCkKPiA+PiArewo+ID4+ICsjaWZkZWYgQ09ORklHX0FDUEkKPiA+ PiArICAgIHJldHVybiBweC0+ZmxhZ3MgJiBYRU5fUFhfUFBDOwo+ID4+ICsjZWxzZQo+ID4+ICsg ICAgcmV0dXJuIHB4LT5mbGFncyA9PSBYRU5fUFhfREFUQTsKPiA+PiArI2VuZGlmCj4gPj4gK30K PiA+PiArCj4gPj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpc19hbGxfZGF0YShzdHJ1Y3QgeGVuX3By b2Nlc3Nvcl9wZXJmb3JtYW5jZSAqcHgpCj4gPj4gK3sKPiA+PiArI2lmZGVmIENPTkZJR19BQ1BJ Cj4gPj4gKyAgICByZXR1cm4gcHgtPmZsYWdzID09ICggWEVOX1BYX1BDVCB8IFhFTl9QWF9QU1Mg fCBYRU5fUFhfUFNEIHwgWEVOX1BYX1BQQyApOwo+ID4+ICsjZWxzZQo+ID4+ICsgICAgcmV0dXJu IHB4LT5mbGFncyA9PSBYRU5fUFhfREFUQTsKPiA+PiArI2VuZGlmCj4gPj4gK30KPiA+Cj4gPiBD b3VsZCB5b3UgcGxlYXNlIGV4cGxhaW4gaGVyZSBhbmQgaW4gdGhlIGNvbW1pdCBtZXNzYWdlIHRo ZSBpZGVhIGJlaGluZAo+ID4gdGhpcz8gSXQgbG9va3MgbGlrZSB3ZSB3YW50IHRvIGdldCByaWQg b2YgdGhlIGRpZmZlcmVudCBmbGFncyBvbgo+ID4gbm9uLUFDUEkgc3lzdGVtcz8gV2h5IGNhbid0 IHdlIHJldXNlIHRoZSBzYW1lIGZsYWdzPwo+IAo+IFlvdSBhcmUgcmlnaHQuIEluZGVlZCBsb29r cyByZWR1bmRhbnQuCj4gSSB3aWxsIGRyb3AgYWxsIHRoZXNlIGhlbHBlcnMgYW5kIHJldXNlIGV4 aXN0aW5nIGZsYWdzLiBJZiB3ZSBhcmUKPiBwcmV0ZW5kaW5nIHRvIGJlIGFuIFAtc3RhdGUgZHJp dmVyIGFuZCB1cGxvYWRpbmcgdGhlIHNhbWUgUC1zdGF0ZSBkYXRhCj4gd2hpY2ggWzFdIHVwbG9h ZHMKPiB0aGVuIEkgd2lsbCBqdXN0IHJldXNlIGV4aXN0aW5nIGZsYWdzLiBJdCB3aWxsIGNvc3Qg bWUgbm90aGluZy4KCk1ha2VzIHNlbnNlCgoKPiBNYXkgSSBhc2sgeW91IHRvIHRha2UgYSBsb29r IGF0IHRoaXMgcGF0Y2ggWzJdPyBJdCBsb29rcyBsaWtlIGEgaGFjawo+IHJpZ2h0IG5vdywgYnV0 IGhvdyB0byBtYWtlIGl0IGluIGEgcHJvcGVyIHdheT8KPiAKPiBbMV0gaHR0cHM6Ly9naXRodWIu Y29tL3RvcnZhbGRzL2xpbnV4L2Jsb2IvbWFzdGVyL2RyaXZlcnMveGVuL3hlbi1hY3BpLXByb2Nl c3Nvci5jI0wyMTAKPiBbMl0gaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS94ZW4tZGV2ZWxA bGlzdHMueGVuLm9yZy9tc2cxMjg0MTAuaHRtbAoKUmVnYXJkaW5nIFsyXToKClRoaXMgaXMgc29t ZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgYWdyZWVkIHdpdGggdGhlIHg4NiBtYWludGFpbmVycy4K SG93ZXZlciwgSSB3b3VsZCBtb3ZlIHRoZSBjb3B5X2Zyb21fZ3Vlc3QgKGFuZCBldmVyeXRoaW5n IHJlbGF0ZWQgdG8KcGFyc2luZyBjYWxsZXIgcHJvdmlkZWQgYXJndW1lbnRzKSB0bwp4ZW4vYXJj aC94ODYvcGxhdGZvcm1faHlwZXJjYWxsLmM6ZG9fcGxhdGZvcm1fb3AuCgpUaGVuLCBJIHdvdWxk IG1ha2Ugc2V0X3B4X3BtaW5mbyBsb29rIGxpa2UgYSByZWd1bGFyIGZ1bmN0aW9uIHRoYXQKdGFr ZXMgcmVndWxhciBhcmd1bWVudHMgKG5vIFhFTl9HVUVTVF9IQU5ETEVzKSwgc28gdGhhdCBpdCBj YW4gYmUgY2FsbGVkCm9uIEFSTSB3aXRob3V0IGhhdmluZyB0byAiZmFrZSIgYW4gaHlwZXJjYWxs LgogCgo+ID4KPiA+Cj4gPj4gIGludCBzZXRfcHhfcG1pbmZvKHVpbnQzMl90IGFjcGlfaWQsIHN0 cnVjdCB4ZW5fcHJvY2Vzc29yX3BlcmZvcm1hbmNlICpkb20wX3B4X2luZm8pCj4gPj4gIHsKPiA+ PiAgICAgIGludCByZXQ9MCwgY3B1aWQ7Cj4gPj4gICAgICBzdHJ1Y3QgcHJvY2Vzc29yX3BtaW5m byAqcG1wdDsKPiA+PiAgICAgIHN0cnVjdCBwcm9jZXNzb3JfcGVyZm9ybWFuY2UgKnB4cHQ7Cj4g Pj4KPiA+PiArI2lmZGVmIENPTkZJR19BQ1BJCj4gPj4gICAgICBjcHVpZCA9IGdldF9jcHVfaWQo YWNwaV9pZCk7Cj4gPj4gKyNlbHNlCj4gPj4gKyAgICBjcHVpZCA9IGFjcGlfaWQ7Cj4gPj4gKyNl bmRpZgo+ID4KPiA+IFJhdGhlciB0aGFuIGFuICNpZmRlZiBoZXJlLCBJIHdvdWxkIHByb2JhYmx5 IGdlbmVyYWxpemUgdGhlIGdldF9jcHVfaWQKPiA+IGZ1bmN0aW9uLgo+IAo+IFdvdWxkIGEgZm9s bG93aW5nIHN0dWIgYmUgZW5vdWdoPwo+IAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4v YWNwaS5oIGIveGVuL2luY2x1ZGUveGVuL2FjcGkuaAo+IGluZGV4IDk0MDkzNTAuLjRhYWI0MWUg MTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUveGVuL2FjcGkuaAo+ICsrKyBiL3hlbi9pbmNsdWRl L3hlbi9hY3BpLmgKPiBAQCAtMTIzLDcgKzEyMywxMSBAQCBzdGF0aWMgaW5saW5lIGludCBhY3Bp X2Jvb3RfdGFibGVfaW5pdCh2b2lkKQo+IAo+ICAjZW5kaWYgICAgICAgICAvKiFDT05GSUdfQUNQ SSovCj4gCj4gKyNpZmRlZiBDT05GSUdfQUNQSQo+ICBpbnQgZ2V0X2NwdV9pZCh1MzIgYWNwaV9p ZCk7Cj4gKyNlbHNlCj4gK3N0YXRpYyBpbmxpbmUgaW50IGdldF9jcHVfaWQodTMyIGFjcGlfaWQp IHsgcmV0dXJuIGFjcGlfaWQ7IH0KPiArI2VuZGlmCj4gCj4gIHVuc2lnbmVkIGludCBhY3BpX3Jl Z2lzdGVyX2dzaSAodTMyIGdzaSwgaW50IGVkZ2VfbGV2ZWwsIGludCBhY3RpdmVfaGlnaF9sb3cp Owo+ICBpbnQgYWNwaV9nc2lfdG9faXJxICh1MzIgZ3NpLCB1bnNpZ25lZCBpbnQgKmlycSk7CgpZ ZXMsIEkgdGhpbmsgdGhhdCdzIE9LLgoKCj4gPgo+ID4KPiA+PiAgICAgIGlmICggY3B1aWQgPCAw IHx8ICFkb20wX3B4X2luZm8pCj4gPj4gICAgICB7Cj4gPj4gICAgICAgICAgcmV0ID0gLUVJTlZB TDsKPiA+PiBAQCAtNDQ2LDYgKzUxMyw4IEBAIGludCBzZXRfcHhfcG1pbmZvKHVpbnQzMl90IGFj cGlfaWQsIHN0cnVjdCB4ZW5fcHJvY2Vzc29yX3BlcmZvcm1hbmNlICpkb20wX3B4X2luCj4gPj4g ICAgICAgICAgcHJvY2Vzc29yX3BtaW5mb1tjcHVpZF0gPSBwbXB0Owo+ID4+ICAgICAgfQo+ID4+ ICAgICAgcHhwdCA9ICZwbXB0LT5wZXJmOwo+ID4+ICsKPiA+PiArI2lmZGVmIENPTkZJR19BQ1BJ Cj4gPj4gICAgICBwbXB0LT5hY3BpX2lkID0gYWNwaV9pZDsKPiA+PiAgICAgIHBtcHQtPmlkID0g Y3B1aWQ7Cj4gPj4KPiA+PiBAQCAtNDcyLDggKzU0MSw5IEBAIGludCBzZXRfcHhfcG1pbmZvKHVp bnQzMl90IGFjcGlfaWQsIHN0cnVjdCB4ZW5fcHJvY2Vzc29yX3BlcmZvcm1hbmNlICpkb20wX3B4 X2luCj4gPj4gICAgICAgICAgICAgIHByaW50X1BDVCgmcHhwdC0+c3RhdHVzX3JlZ2lzdGVyKTsK PiA+PiAgICAgICAgICB9Cj4gPj4gICAgICB9Cj4gPj4gKyNlbmRpZiAvKiBDT05GSUdfQUNQSSAq Lwo+IAo+IEJUVywgYXQgdGhlIGZpcnN0IHNpZ2h0IHdlIGNvdWxkIG9taXQgdGhpcyAjaWZkZWYg dG9vIHdpdGggYmVpbmcgdGFrZW4KPiBjYXJlIG9mIHNwYWNlX2lkIGNoZWNrIHRvIHBhc3Mgc3Vj Y2Vzc2Z1bGx5Lgo+IAo+ID4+Cj4gPj4gLSAgICBpZiAoIGRvbTBfcHhfaW5mby0+ZmxhZ3MgJiBY RU5fUFhfUFNTICkKPiA+PiArICAgIGlmICggaXNfcHNzX2RhdGEoZG9tMF9weF9pbmZvKSApCj4g Pj4gICAgICB7Cj4gPj4gICAgICAgICAgLyogY2FwYWJpbGl0eSBjaGVjayAqLwo+ID4+ICAgICAg ICAgIGlmIChkb20wX3B4X2luZm8tPnN0YXRlX2NvdW50IDw9IDEpCj4gPj4gQEAgLTUwMCw3ICs1 NzAsNyBAQCBpbnQgc2V0X3B4X3BtaW5mbyh1aW50MzJfdCBhY3BpX2lkLCBzdHJ1Y3QgeGVuX3By b2Nlc3Nvcl9wZXJmb3JtYW5jZSAqZG9tMF9weF9pbgo+ID4+ICAgICAgICAgICAgICBwcmludF9Q U1MocHhwdC0+c3RhdGVzLHB4cHQtPnN0YXRlX2NvdW50KTsKPiA+PiAgICAgIH0KPiA+Pgo+ID4+ IC0gICAgaWYgKCBkb20wX3B4X2luZm8tPmZsYWdzICYgWEVOX1BYX1BTRCApCj4gPj4gKyAgICBp ZiAoIGlzX3BzZF9kYXRhKGRvbTBfcHhfaW5mbykgKQo+ID4+ICAgICAgewo+ID4+ICAgICAgICAg IC8qIGNoZWNrIGRvbWFpbiBjb29yZGluYXRpb24gKi8KPiA+PiAgICAgICAgICBpZiAoZG9tMF9w eF9pbmZvLT5zaGFyZWRfdHlwZSAhPSBDUFVGUkVRX1NIQVJFRF9UWVBFX0FMTCAmJgo+ID4+IEBA IC01MjAsNyArNTkwLDcgQEAgaW50IHNldF9weF9wbWluZm8odWludDMyX3QgYWNwaV9pZCwgc3Ry dWN0IHhlbl9wcm9jZXNzb3JfcGVyZm9ybWFuY2UgKmRvbTBfcHhfaW4KPiA+PiAgICAgICAgICAg ICAgcHJpbnRfUFNEKCZweHB0LT5kb21haW5faW5mbyk7Cj4gPj4gICAgICB9Cj4gPj4KPiA+PiAt ICAgIGlmICggZG9tMF9weF9pbmZvLT5mbGFncyAmIFhFTl9QWF9QUEMgKQo+ID4+ICsgICAgaWYg KCBpc19wcGNfZGF0YShkb20wX3B4X2luZm8pICkKPiA+PiAgICAgIHsKPiA+PiAgICAgICAgICBw eHB0LT5wbGF0Zm9ybV9saW1pdCA9IGRvbTBfcHhfaW5mby0+cGxhdGZvcm1fbGltaXQ7Cj4gPj4K PiA+PiBAQCAtNTM0LDggKzYwNCw3IEBAIGludCBzZXRfcHhfcG1pbmZvKHVpbnQzMl90IGFjcGlf aWQsIHN0cnVjdCB4ZW5fcHJvY2Vzc29yX3BlcmZvcm1hbmNlICpkb20wX3B4X2luCj4gPj4gICAg ICAgICAgfQo+ID4+ICAgICAgfQo+ID4+Cj4gPj4gLSAgICBpZiAoIGRvbTBfcHhfaW5mby0+Zmxh Z3MgPT0gKCBYRU5fUFhfUENUIHwgWEVOX1BYX1BTUyB8Cj4gPj4gLSAgICAgICAgICAgICAgICBY RU5fUFhfUFNEIHwgWEVOX1BYX1BQQyApICkKPiA+PiArICAgIGlmICggaXNfYWxsX2RhdGEoZG9t MF9weF9pbmZvKSApCj4gPj4gICAgICB7Cj4gPj4gICAgICAgICAgcHhwdC0+aW5pdCA9IFhFTl9Q WF9JTklUOwo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9wbGF0Zm9y bS5oIGIveGVuL2luY2x1ZGUvcHVibGljL3BsYXRmb3JtLmgKPiA+PiBpbmRleCA5NGRiYzNmLi4z Mjg1NzljIDEwMDY0NAo+ID4+IC0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9wbGF0Zm9ybS5oCj4g Pj4gKysrIGIveGVuL2luY2x1ZGUvcHVibGljL3BsYXRmb3JtLmgKPiA+PiBAQCAtMzg0LDYgKzM4 NCw3IEBAIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbnBmX2dldGlkbGV0aW1lX3QpOwo+ID4+ ICAjZGVmaW5lIFhFTl9QWF9QU1MgICAyCj4gPj4gICNkZWZpbmUgWEVOX1BYX1BQQyAgIDQKPiA+ PiAgI2RlZmluZSBYRU5fUFhfUFNEICAgOAo+ID4+ICsjZGVmaW5lIFhFTl9QWF9EQVRBICAxNgo+ ID4+Cj4gPj4gIHN0cnVjdCB4ZW5fcG93ZXJfcmVnaXN0ZXIgewo+ID4+ICAgICAgdWludDMyX3Qg ICAgIHNwYWNlX2lkOwo+ID4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vcHJvY2Vzc29y X3BlcmYuaCBiL3hlbi9pbmNsdWRlL3hlbi9wcm9jZXNzb3JfcGVyZi5oCj4gPj4gaW5kZXggZDhh MWJhNi4uYWZkY2NmMiAxMDA2NDQKPiA+PiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4vcHJvY2Vzc29y X3BlcmYuaAo+ID4+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9wcm9jZXNzb3JfcGVyZi5oCj4gPj4g QEAgLTMsNyArMyw5IEBACj4gPj4KPiA+PiAgI2luY2x1ZGUgPHB1YmxpYy9wbGF0Zm9ybS5oPgo+ ID4+ICAjaW5jbHVkZSA8cHVibGljL3N5c2N0bC5oPgo+ID4+ICsjaWZkZWYgQ09ORklHX0FDUEkK PiA+PiAgI2luY2x1ZGUgPHhlbi9hY3BpLmg+Cj4gPj4gKyNlbmRpZgo+ID4+Cj4gPj4gICNkZWZp bmUgWEVOX1BYX0lOSVQgMHg4MDAwMDAwMAo+ID4+Cj4gPj4gQEAgLTI0LDggKzI2LDEwIEBAIGlu dCAgY3B1ZnJlcV9kZWxfY3B1KHVuc2lnbmVkIGludCk7Cj4gPj4gIHN0cnVjdCBwcm9jZXNzb3Jf cGVyZm9ybWFuY2Ugewo+ID4+ICAgICAgdWludDMyX3Qgc3RhdGU7Cj4gPj4gICAgICB1aW50MzJf dCBwbGF0Zm9ybV9saW1pdDsKPiA+PiArI2lmZGVmIENPTkZJR19BQ1BJCj4gPj4gICAgICBzdHJ1 Y3QgeGVuX3BjdF9yZWdpc3RlciBjb250cm9sX3JlZ2lzdGVyOwo+ID4+ICAgICAgc3RydWN0IHhl bl9wY3RfcmVnaXN0ZXIgc3RhdHVzX3JlZ2lzdGVyOwo+ID4+ICsjZW5kaWYKPiA+PiAgICAgIHVp bnQzMl90IHN0YXRlX2NvdW50Owo+ID4+ICAgICAgc3RydWN0IHhlbl9wcm9jZXNzb3JfcHggKnN0 YXRlczsKPiA+PiAgICAgIHN0cnVjdCB4ZW5fcHNkX3BhY2thZ2UgZG9tYWluX2luZm87Cj4gPj4g QEAgLTM1LDggKzM5LDEwIEBAIHN0cnVjdCBwcm9jZXNzb3JfcGVyZm9ybWFuY2Ugewo+ID4+ICB9 Owo+ID4+Cj4gPj4gIHN0cnVjdCBwcm9jZXNzb3JfcG1pbmZvIHsKPiA+PiArI2lmZGVmIENPTkZJ R19BQ1BJCj4gPj4gICAgICB1aW50MzJfdCBhY3BpX2lkOwo+ID4+ICAgICAgdWludDMyX3QgaWQ7 Cj4gPj4gKyNlbmRpZgo+ID4+ICAgICAgc3RydWN0IHByb2Nlc3Nvcl9wZXJmb3JtYW5jZSAgICBw ZXJmOwo+ID4+ICB9Owo+IAo+IFRoZXJlIHdpbGwgYmUgbm8gY2hhbmdlcyBoZXJlIGFzIHdlbGwu CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==