From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC 10/16] xen/arm: Introduce alternative runtime patching Date: Sat, 14 May 2016 19:02:50 +0100 Message-ID: <5737684A.9010001@arm.com> References: <1462466065-30212-1-git-send-email-julien.grall@arm.com> <1462466065-30212-11-git-send-email-julien.grall@arm.com> <20160513202601.GB20323@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160513202601.GB20323@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: andre.przywara@arm.com, sstabellini@kernel.org, steve.capper@arm.com, wei.chen@arm.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org SGkgS29ucmFkLAoKT24gMTMvMDUvMjAxNiAyMToyNiwgS29ucmFkIFJ6ZXN6dXRlayBXaWxrIHdy b3RlOgo+IE9uIFRodSwgTWF5IDA1LCAyMDE2IGF0IDA1OjM0OjE5UE0gKzAxMDAsIEp1bGllbiBH cmFsbCB3cm90ZToKPj4gU29tZSBvZiB0aGUgcHJvY2Vzc29yIGVycmF0dW0gd2lsbCByZXF1aXJl IHRvIG1vZGlmeSBjb2RlIHNlcXVlbmNlLgo+PiBBcyB0aG9zZSBtb2RpZmljYXRpb25zIG1heSBp bXBhY3QgdGhlIHBlcmZvcm1hbmNlLCB0aGV5IHNob3VsZCBvbmx5Cj4+IGJlIGVuYWJsZWQgb24g YWZmZWN0ZWQgY29yZXMuIEZ1cnRoZXJtb3JlLCBYZW4gbWF5IGFsc28gd2FudCB0byB0YWtlCj4+ IGFkdmFudGFnZSBvZiBuZXcgaGFyZHdhcmUgZmVhdHVyZXMgY29taW5nIHVwIHdpdGggdjguMSBh bmQgdjguMi4KPj4KPj4gVGhpcyBwYXRjaCBhZGRzIGFuIGluZnJhc3RydWN0dXJlIHRvIHBhdGNo IFhlbiBkdXJpbmcgYm9vdCB0aW1lCj4+IGRlcGVuZGluZyBvbiB0aGUgImZlYXR1cmVzIiBhdmFp bGFibGUgb24gdGhlIHBsYXRmb3JtLgo+Pgo+PiBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGZp bGUgYXJjaC9hcm02NC9rZXJuZWwvYWx0ZXJuYXRpdmUuYyBpbgo+PiBMaW51eCA0LjYtcmMzLiBB bnkgcmVmZXJlbmNlcyB0byBhcm02NCBoYXZlIGJlZW4gZHJvcHBlZCB0byBtYWtlIHRoZQo+PiBj b2RlIGFzIGdlbmVyaWMgYXMgcG9zc2libGUuCj4+Cj4+IEZ1cnRoZXJtb3JlLCBpbiBYZW4gdGhl IGV4ZWN1dGFibGUgc2VjdGlvbnMgKC50ZXh0IGFuZCAuaW5pdC50ZXh0KQo+PiBhcmUgYWx3YXlz IG1hcHBlZCByZWFkLW9ubHkgYW5kIGVuZm9yY2VkIGJ5IFNDVExSLldOWC4gU28gaXQgaXMgbm90 Cj4+IHBvc3NpYmxlIHRvIGRpcmVjdGx5IHBhdGNoIFhlbi4KPgo+IElzIGl0IG5vdCBwb3NzaWJs ZSB0byB0ZW1wb3JhcmlseSAndW5lbmZvcmNlJyB0aGUgU0NUTFIuV05YPwoKVGhlIHByb2JsZW0g aXMgbm90IGJlY2F1c2Ugb2YgU0NUTFIuV05YIGJ1dCBiZWNhdXNlIHRoZSBlbnRyaWVzIGFyZSAK Y2hhbmdlIGZyb20gcmVhZC13cml0ZSB0byByZWFkLW9ubHkgYWZ0ZXJ3YXJkcy4KClRoZSBBUk0g QVJNIChzZWUgRDQtMTczMiBpbiBBUk0gRERJIDA0ODdBLmkpIHJlY29tbWVuZHMgdGhlIHVzZSBv ZiAKYnJlYWstYmVmb3JlLW1ha2UgaWYgZWl0aGVyIHRoZSBvbGQgb3IgbmV3IGVudHJ5IGlzIHdy aXRhYmxlIHdoZW4gdGhlIApwYWdlIHRhYmxlIGlzIHNoYXJlZCBiZXR3ZWVuIG11bHRpcGxlcyBw cm9jZXNzb3IuIFRoaXMgaXMgdG8gYXZvaWQgCnBvc3NpYmxlIFRMQiBjb25mbGljdHMgb24gcGxh dGZvcm0gaGF2ZSBhZ2dyZXNzaXZlIHByZWZldGNoZXIuCgpUaGUgYnJlYWstYmVmb3JlLW1ha2Ug YXBwcm9hY2ggcmVxdWlyZXMgdGhlIGZvbGxvd2luZyBzdGVwczoKICAgIC0gUmVwbGFjaW5nIHRo ZSBvbGQgZW50cnkgd2l0aCBhbiBpbnZhbGlkIGVudHJ5CiAgICAtIEludmFsaWRhdGUgdGhlIGVu dHJ5IGJ5IGZsdXNoIHRoZSBUTEJzCiAgICAtIFdyaXRlIHRoZSBuZXcgZW50cnkKCkhvd2V2ZXIs IHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2gsIHNlY29uZGFyeSBDUFVzIHJ1bnMgYXQgdGhlIHNh bWUsIHNvIApldmVuIHdpdGggdGhlIGJyZWFrLWJlZm9yZS1tYWtlIGFwcHJvYWNoIGl0IG1pZ2h0 IGJlIHBvc3NpYmxlIHRvIGhpdCBhIApkYXRhIGFib3J0IGlmIHRoZSBDUFUgZXhlY3V0ZSBjb2Rl IG9uIGFuIGVudHJ5IHRoYXQgaXMgY3VycmVudGx5IGJlZW4gCmNoYW5nZWQuCgpJdCB3b3VsZCBi ZSBwb3NzaWJsZSB0byBtYWtlIHRoZSBDUFVzIHNwaW5uaW5nIG91dHNpZGUgb2YgdGhlIApleGVj dXRhYmxlLCBidXQgSSB0aGluayB0aGlzIG1ha2UgdGhlIGNvZGUgbW9yZSBjb21wbGljYXRlLiBO b3RlIHRoYXQgCnlvdSB3b3VsZCBoYXZlIHRoZSBzYW1lIGlzc3VlIHdpdGggWFNwbGljZS4KCllv dSBtYXkgd29uZGVyIHdoeSBYZW4gaXMgcGF0Y2hlZCB3aGVuIGFsbCB0aGUgQ1BVcyBhcmUgb25s aW5lLiBUaGlzIGlzIApiZWNhdXNlIGluIGJpZy5MSVRUTEUgZW52aXJvbm1lbnQsIGJpZyBhbmQg bGl0dGxlIGNvcmVzIHdpbGwgaGF2ZSAKZGlmZmVyZW50IGVycmF0YS4gVGhlIG9ubHkgd2F5IHRv IGtub3cgdGhlIGxpc3Qgb2YgZXJyYXRhIGlzIHRvIHByb2JlIAplYWNoIENQVSwgYW5kIHRoZXJl Zm9yZSBicmluZyB0aGVtIHVwLgoKSSBob3BlIHRoaXMgZ2l2ZXMgeW91IG1vcmUgaW5zaWdodHMg b24gd2h5IEkgY2hvb3NlIHRoaXMgYXBwcm9hY2guIEkgY2FuIAp1cGRhdGUgdGhlIGNvbW1pdCBt ZXNzYWdlIHdpdGggaXQuCgo+Cj4+Cj4+IFRvIGJ5LXBhc3MgdGhpcyByZXN0cmljdGlvbiwgYSB0 ZW1wb3Jhcnkgd3JpdGVhYmxlIG1hcHBpbmcgaXMgbWFkZSB3aXRoCj4+IHZtYXAuIFRoaXMgbWFw cGluZyB3aWxsIGJlIHVzZWQgdG8gd3JpdGUgdGhlIG5ldyBpbnN0cnVjdGlvbnMuCj4+Cj4+IExh c3RseSwgcnVudGltZSBwYXRjaGluZyBpcyBjdXJyZW50bHkgbm90IG5lY2Vzc2FyeSBmb3IgQVJN MzIuIFNvIHRoZQo+PiBjb2RlIGlzIG9ubHkgZW5hYmxlZCBmb3IgQVJNNjQuCj4+Cj4+IFNpZ25l ZC1vZmYtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Cj4+IC0tLQo+PiAg IHhlbi9hcmNoL2FybS9LY29uZmlnICAgICAgICAgICAgICB8ICAgNSArCj4+ICAgeGVuL2FyY2gv YXJtL01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsKPj4gICB4ZW4vYXJjaC9hcm0vYWx0ZXJu YXRpdmUuYyAgICAgICAgfCAyMTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPj4gICB4ZW4vYXJjaC9hcm0vc2V0dXAuYyAgICAgICAgICAgICAgfCAgIDggKysKPj4gICB4 ZW4vYXJjaC9hcm0veGVuLmxkcy5TICAgICAgICAgICAgfCAgIDcgKysKPj4gICB4ZW4vaW5jbHVk ZS9hc20tYXJtL2FsdGVybmF0aXZlLmggfCAxNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPj4gICB4ZW4vaW5jbHVkZS9hc20tYXJtL2FybTY0L2luc24uaCAgfCAgMTYgKysrCj4+ICAg NyBmaWxlcyBjaGFuZ2VkLCA0MTkgaW5zZXJ0aW9ucygrKQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCB4ZW4vYXJjaC9hcm0vYWx0ZXJuYXRpdmUuYwo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4v aW5jbHVkZS9hc20tYXJtL2FsdGVybmF0aXZlLmgKPj4KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo L2FybS9LY29uZmlnIGIveGVuL2FyY2gvYXJtL0tjb25maWcKPj4gaW5kZXggNjIzMWNkNS4uOWIz ZTY2YiAxMDA2NDQKPj4gLS0tIGEveGVuL2FyY2gvYXJtL0tjb25maWcKPj4gKysrIGIveGVuL2Fy Y2gvYXJtL0tjb25maWcKPj4gQEAgLTE0LDYgKzE0LDcgQEAgY29uZmlnIEFSTV82NAo+PiAgIAlk ZWZfYm9vbCB5Cj4+ICAgCWRlcGVuZHMgb24gNjRCSVQKPj4gICAJc2VsZWN0IEhBU19HSUNWMwo+ PiArICAgIHNlbGVjdCBBTFRFUk5BVElWRQo+Cj4gSGFyZCB0YWJzLCBub3Qgc3BhY2VzLgoKUmln aHQsIEkgd2lsbCBjaGFuZ2UgaW4gdGhlIG5leHQgdmVyc2lvbi4KCj4+Cj4+ICAgY29uZmlnIEFS TQo+PiAgIAlkZWZfYm9vbCB5Cj4+IEBAIC00Niw2ICs0NywxMCBAQCBjb25maWcgQUNQSQo+PiAg IGNvbmZpZyBIQVNfR0lDVjMKPj4gICAJYm9vbAo+Pgo+PiArIyBTZWxlY3QgQUxURVJOQVRJVkUg aWYgdGhlIGFyY2hpdGVjdHVyZSBzdXBwb3J0cyBydW50aW1lIHBhdGNoaW5nCj4+ICtjb25maWcg QUxURVJOQVRJVkUKPj4gKyAgICBib29sCj4KPiBEaXR0by4KCk9rLgoKPj4gKwo+PiAgIGVuZG1l bnUKPj4KPj4gICBzb3VyY2UgImNvbW1vbi9LY29uZmlnIgo+PiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCj4+IGluZGV4IDkxMjJmNzgu LjJkMzMwYWEgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZQo+PiArKysgYi94 ZW4vYXJjaC9hcm0vTWFrZWZpbGUKPj4gQEAgLTQsNiArNCw3IEBAIHN1YmRpci15ICs9IHBsYXRm b3Jtcwo+PiAgIHN1YmRpci0kKENPTkZJR19BUk1fNjQpICs9IGVmaQo+PiAgIHN1YmRpci0kKENP TkZJR19BQ1BJKSArPSBhY3BpCj4+Cj4+ICtvYmotJChDT05GSUdfQUxURVJOQVRJVkUpICs9IGFs dGVybmF0aXZlLm8KPgo+IFRoaXMgcHJvYmFibHkgbmVlZHMgdG8gYmUgYWx0ZXJuYXRpdmUuaW5p dC5vID8KPj4gICBvYmoteSArPSBib290ZmR0Lm8KPj4gICBvYmoteSArPSBjcHUubwo+PiAgIG9i ai15ICs9IGNwdWZlYXR1cmUubwo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FsdGVybmF0 aXZlLmMgYi94ZW4vYXJjaC9hcm0vYWx0ZXJuYXRpdmUuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+PiBpbmRleCAwMDAwMDAwLi4wYTVkMWM4Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIveGVu L2FyY2gvYXJtL2FsdGVybmF0aXZlLmMKPj4gQEAgLTAsMCArMSwyMTcgQEAKPj4gKy8qCj4+ICsg KiBhbHRlcm5hdGl2ZSBydW50aW1lIHBhdGNoaW5nCj4+ICsgKiBpbnNwaXJlZCBieSB0aGUgeDg2 IHZlcnNpb24KPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQVJNIEx0ZC4KPgo+IE5v dCAyMDE2PwoKVGhlIGNvZGUgaGFzIGJlZW4gdGFrZW4gZnJvbSBMaW51eC4gSSB3YXMgbm90IHN1 cmUgd2hhdCB0byBkbyBoZXJlLiBJIAp3aWxsIHVwZGF0ZSB3aXRoIDIwMTQtMjAxNi4KCj4KPj4g KyAqCj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+PiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPj4gKyAqIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+PiArICoKPj4gKyAqIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+PiAr ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKPj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKPj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCj4+ICsgKgo+PiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKPj4gKyAqIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ Lgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+Cj4+ICsjaW5jbHVkZSA8 eGVuL2luaXQuaD4KPj4gKyNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KPj4gKyNpbmNsdWRlIDx4ZW4v a2VybmVsLmg+Cj4+ICsjaW5jbHVkZSA8eGVuL21tLmg+Cj4+ICsjaW5jbHVkZSA8eGVuL3ZtYXAu aD4KPj4gKyNpbmNsdWRlIDx4ZW4vc21wLmg+Cj4+ICsjaW5jbHVkZSA8eGVuL3N0b3BfbWFjaGlu ZS5oPgo+PiArI2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS5oPgo+PiArI2luY2x1ZGUgPGFzbS9h dG9taWMuaD4KPj4gKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+Cj4+ICsjaW5jbHVkZSA8YXNt L2NwdWZlYXR1cmUuaD4KPj4gKyNpbmNsdWRlIDxhc20vaW5zbi5oPgo+PiArI2luY2x1ZGUgPGFz bS9wYWdlLmg+Cj4+ICsKPj4gKyNkZWZpbmUgX19BTFRfUFRSKGEsZikgICAgICAodTMyICopKCh2 b2lkICopJihhKS0+ZiArIChhKS0+ZikKPj4gKyNkZWZpbmUgQUxUX09SSUdfUFRSKGEpICAgICBf X0FMVF9QVFIoYSwgb3JpZ19vZmZzZXQpCj4+ICsjZGVmaW5lIEFMVF9SRVBMX1BUUihhKSAgICAg X19BTFRfUFRSKGEsIGFsdF9vZmZzZXQpCj4+ICsKPj4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgYWx0 X2luc3RyIF9fYWx0X2luc3RydWN0aW9uc1tdLCBfX2FsdF9pbnN0cnVjdGlvbnNfZW5kW107Cj4+ ICsKPj4gK3N0cnVjdCBhbHRfcmVnaW9uIHsKPj4gKyAgICBjb25zdCBzdHJ1Y3QgYWx0X2luc3Ry ICpiZWdpbjsKPj4gKyAgICBjb25zdCBzdHJ1Y3QgYWx0X2luc3RyICplbmQ7Cj4+ICt9Owo+PiAr Cj4+ICsvKgo+PiArICogQ2hlY2sgaWYgdGhlIHRhcmdldCBQQyBpcyB3aXRoaW4gYW4gYWx0ZXJu YXRpdmUgYmxvY2suCj4+ICsgKi8KPj4gK3N0YXRpYyBib29sX3QgYnJhbmNoX2luc25fcmVxdWly ZXNfdXBkYXRlKGNvbnN0IHN0cnVjdCBhbHRfaW5zdHIgKmFsdCwKPgo+IF9faW5pdD8KCk5vLCB4 U3BsaWNlIHdpbGwgbGlrZWx5IGNvbnRhaW4gc29tZSBhbHRlcm5hdGl2ZXMsIHdoaWNoIFhlbiB3 aWxsIG5lZWQgCnRvIGFwcGx5LgoKSSBoYXZlIGluIG1pbmQgaW52YXNpdmUgZXJyYXRhIHN1Y2gg YXMgdGhlIG9uZSBpbXBsZW1lbnRlZCBpbiBwYXRjaCAjMTMgCmFuZCAjMTQuIEZ1cnRoZXJtb3Jl LCBuZXcgQVJNdjguMSBmZWF0dXJlcyB3aWxsIHJlcXVpcmVzIHNvbWUgdG8gYWRkIAphbHRlcm5h dGl2ZXMgaW4gc3BpbmxvY2sgYW5kIGF0b21pYyBoZWxwZXJzLgoKPj4gK3sKPj4gKyAgICBzdGF0 aWMgaW50IHBhdGNoZWQgPSAwOwo+PiArICAgIHN0cnVjdCBhbHRfcmVnaW9uIHJlZ2lvbiA9IHsK Pgo+IGNvbnN0ID8KCnN1cmUuCgo+PiArICAgICAgICAuYmVnaW4gPSBfX2FsdF9pbnN0cnVjdGlv bnMsCj4+ICsgICAgICAgIC5lbmQgPSBfX2FsdF9pbnN0cnVjdGlvbnNfZW5kLAo+PiArICAgIH07 Cj4+ICsKPj4gKyAgICAvKiBXZSBhbHdheXMgaGF2ZSBhIENQVSAwIGF0IHRoaXMgcG9pbnQgKF9f aW5pdCkgKi8KPj4gKyAgICBpZiAoIHNtcF9wcm9jZXNzb3JfaWQoKSApCj4+ICsgICAgewo+PiAr ICAgICAgICB3aGlsZSAoICFyZWFkX2F0b21pYygmcGF0Y2hlZCkgKQo+PiArICAgICAgICAgICAg Y3B1X3JlbGF4KCk7Cj4+ICsgICAgICAgIGlzYigpOwo+PiArICAgIH0KPj4gKyAgICBlbHNlCj4+ ICsgICAgewo+PiArICAgICAgICBpbnQgcmV0Owo+PiArCj4+ICsgICAgICAgIEJVR19PTihwYXRj aGVkKTsKPj4gKyAgICAgICAgcmV0ID0gX19hcHBseV9hbHRlcm5hdGl2ZXMoJnJlZ2lvbik7Cj4+ ICsgICAgICAgIC8qIFRoZSBwYXRjaGluZyBpcyBub3QgZXhwZWN0ZWQgdG8gZmFpbCBkdXJpbmcg Ym9vdC4gKi8KPj4gKyAgICAgICAgQlVHX09OKHJldCAhPSAwKTsKPj4gKwo+PiArICAgICAgICAv KiBCYXJyaWVycyBwcm92aWRlZCBieSB0aGUgY2FjaGUgZmx1c2hpbmcgKi8KPj4gKyAgICAgICAg d3JpdGVfYXRvbWljKCZwYXRjaGVkLCAxKTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICByZXR1cm4g MDsKPj4gK30KPj4gKwo+PiArdm9pZCBfX2luaXQgYXBwbHlfYWx0ZXJuYXRpdmVzX2FsbCh2b2lk KQo+PiArewo+PiArICAgIGludCByZXQ7Cj4+ICsKPj4gKwkvKiBiZXR0ZXIgbm90IHRyeSBjb2Rl IHBhdGNoaW5nIG9uIGEgbGl2ZSBTTVAgc3lzdGVtICovCj4+ICsgICAgcmV0ID0gc3RvcF9tYWNo aW5lX3J1bihfX2FwcGx5X2FsdGVybmF0aXZlc19tdWx0aV9zdG9wLCBOVUxMLCBOUl9DUFVTKTsK Pgo+IE5SX0NQVVM/IE5vdCAnbnVtX29ubGluZV9jcHVzJyA/CgpUaGUgM3JkIGFyZ3VtZW50IG9m IHN0b3BfbWFjaGluZV9ydW4gaXMgdGhlIENQVSB3aGVyZSB0aGUgY2FsbGJhY2sgd2lsbCAKYmUg ZXhlY3V0ZWQuIElmIE5SX0NQVVMgaXMgcGFzc2VkLCB0aGUgY2FsbGJhY2sgd2lsbCBiZSBleGVj dXRlZCBvbiBhbGwgCnRoZSBDUFVzLgoKPgo+IEFuZCBJIGFtIGJpdCBjb25mdXNlZC4gVGhlIGNv bW1lbnQgc2F5cyB0aGF0ICdzdG9wX21hY2hpbmUnIHN0YXRlIG1hY2hpbmUKPiBtYXkgYmUgcGF0 Y2hlZCwgYnV0IGhlcmUgeW91IHVzZSB0aGUgc3RvcF9tYWNoaW5lX3J1biB3aGljaCBpcyBwYXJ0 IG9mCj4gc3RvcF9tYWNoaW5lPyEKClllcywgaGVuY2UgdGhlIGNhbGxiYWNrIF9fYXBwbHlfYWx0 ZXJuYXRpdmVzX211bHRpX3N0b3AgaXMgZXhlY3V0ZWQgb24gCmV2ZXJ5IG9ubGluZSBDUFVzLiBD UFUwIHdpbGwgcGF0Y2ggdGhlIGNvZGUgd2hpbHN0IHRoZSBvdGhlciB3aWxsIHNwaW4gCnVudGls IHRoZSBjb2RlIGhhcyBiZWVuIHBhdGNoZWQuCgo+Cj4+ICsKPj4gKyAgICAvKiBzdG9wX21hY2hp bmVfcnVuIHNob3VsZCBuZXZlciBmYWlsIGF0IHRoaXMgc3RhZ2Ugb2YgdGhlIGJvb3QgKi8KPj4g KyAgICBCVUdfT04ocmV0KTsKPj4gK30KPj4gKwo+PiAraW50IGFwcGx5X2FsdGVybmF0aXZlcyh2 b2lkICpzdGFydCwgc2l6ZV90IGxlbmd0aCkKPgo+IGNvbnN0IHZvaWQgKnN0YXJ0PwoKQ291bGQg YmUuCgo+PiArewo+Cj4gY29uc3QgPwoKWWVzLgoKPj4gKyAgICBzdHJ1Y3QgYWx0X3JlZ2lvbiBy ZWdpb24gPSB7Cj4+ICsgICAgICAgIC5iZWdpbiA9IHN0YXJ0LAo+PiArICAgICAgICAuZW5kID0g c3RhcnQgKyBsZW5ndGgsCj4+ICsgICAgfTsKPj4gKwo+PiArICAgIHJldHVybiBfX2FwcGx5X2Fs dGVybmF0aXZlcygmcmVnaW9uKTsKPj4gK30KPj4gKwo+PiArLyoKPj4gKyAqIExvY2FsIHZhcmlh YmxlczoKPj4gKyAqIG1vZGU6IEMKPj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPj4gKyAqIGMt YmFzaWMtb2Zmc2V0OiA0Cj4+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKPj4gKyAqIEVuZDoK Pj4gKyAqLwo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3NldHVwLmMgYi94ZW4vYXJjaC9h cm0vc2V0dXAuYwo+PiBpbmRleCAwOWZmMWVhLi5jNDM4OWVmIDEwMDY0NAo+PiAtLS0gYS94ZW4v YXJjaC9hcm0vc2V0dXAuYwo+PiArKysgYi94ZW4vYXJjaC9hcm0vc2V0dXAuYwo+PiBAQCAtMzgs NiArMzgsNyBAQAo+PiAgICNpbmNsdWRlIDx4ZW4vdm1hcC5oPgo+PiAgICNpbmNsdWRlIDx4ZW4v bGliZmR0L2xpYmZkdC5oPgo+PiAgICNpbmNsdWRlIDx4ZW4vYWNwaS5oPgo+PiArI2luY2x1ZGUg PGFzbS9hbHRlcm5hdGl2ZS5oPgo+PiAgICNpbmNsdWRlIDxhc20vcGFnZS5oPgo+PiAgICNpbmNs dWRlIDxhc20vY3VycmVudC5oPgo+PiAgICNpbmNsdWRlIDxhc20vc2V0dXAuaD4KPj4gQEAgLTgz NCw2ICs4MzUsMTMgQEAgdm9pZCBfX2luaXQgc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgYm9vdF9w aHlzX29mZnNldCwKPj4KPj4gICAgICAgZG9faW5pdGNhbGxzKCk7Cj4+Cj4+ICsgICAgLyoKPj4g KyAgICAgKiBJdCBuZWVkcyB0byBiZSBjYWxsZWQgYWZ0ZXIgZG9faW5pdGNhbGxzIHRvIGJlIGFi bGUgdG8gdXNlCj4+ICsgICAgICogc3RvcF9tYWNoaW5lICh0YXNrbGV0cyBpbml0aWFsaXplZCB2 aWEgYW4gaW5pdGNhbGwpLgo+PiArICAgICAqIFhYWDogSXMgaXQgdG9vIGxhdGU/Cj4KPiBXaGF0 IGVsc2UgaXMgZ29pbmcgdG8gcnVuIGluIGluaXRjYWxscz8gV2h5IGNhbid0IHRoaXMgcGF0Y2hp bmcgYmUgZG9uZQo+IHdoZW4geW91IG9ubHkgaGF2ZSBvbmUgQ1BVPwoKU2VlIG15IGFuc3dlciBh Ym92ZS4gWGVuIG5lZWRzIHRvIGtub3cgdGhlIGxpc3Qgb2YgZXJyYXRhIHRoYXQgYWZmZWN0IApl YWNoIENQVSBiZWZvcmUgcGF0Y2hpbmcuCgpSZWdhcmRzLAotLSAKSnVsaWVuIEdyYWxsCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=