From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?iso-8859-1?Q?Monn=E9?= Subject: Re: [PATCH 5/7] x86/alt: Support for automatic padding calculations Date: Mon, 12 Feb 2018 18:09:53 +0000 Message-ID: <20180212180953.n4qa3nsgabsicmpm@MacBook-Pro-de-Roger.local> References: <1518434587-22827-1-git-send-email-andrew.cooper3@citrix.com> <1518434587-22827-6-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1518434587-22827-6-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Andrew Cooper Cc: Wei Liu , Jan Beulich , Xen-devel List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBGZWIgMTIsIDIwMTggYXQgMTE6MjM6MDVBTSArMDAwMCwgQW5kcmV3IENvb3BlciB3 cm90ZToKPiBUaGUgY29ycmVjdCBhbW91bnQgb2YgcGFkZGluZyBpbiBhbiBvcmlnaW4gcGF0Y2gg c2l0ZSBjYW4gYmUgY2FsY3VsYXRlZAo+IGF1dG9tYXRpY2FsbHksIGJhc2VkIG9uIHRoZSByZWxh dGl2ZSBsZW5ndGhzIG9mIHRoZSByZXBsYWNlbWVudHMuCj4gCj4gVGhpcyByZXF1aXJlcyBhIGJp dCBvZiB0cmlja2VyeSB0byBjYWxjdWxhdGUgY29ycmVjdGx5LCBlc3BlY2lhbGx5IGluIHRoZQo+ IEFMVEVOUkFUSVZFXzIgY2FzZSB3aGVyZSBhIGJyYW5jaGxlc3MgbWF4KCkgY2FsY3VsYXRpb24g aW4gbmVlZGVkLiAgVGhlCj4gY2FsY3VsYXRpb24gaXMgZnVydGhlciBjb21wbGljYXRlZCBiZWNh dXNlIEdBUydzIGlkZWEgb2YgdHJ1ZSBpcyAtMSByYXRoZXIKPiB0aGFuIDEsIHdoaWNoIGlzIHdo eSB0aGUgZXh0cmEgbmVnYXRpb25zIGFyZSByZXF1aXJlZC4KPiAKPiBBZGRpdGlvbmFsbHksIGhh dmUgYXBwbHlfYWx0ZXJuYXRpdmVzKCkgYXR0ZW1wdCB0byBvcHRpbWlzZSB0aGUgcGFkZGluZyBu b3BzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNp dHJpeC5jb20+CgpMR1RNLCBqdXN0IGEgY291cGxlIG9mIG5pdHM6CgpSZXZpZXdlZC1ieTogUm9n ZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+Cgo+IC0tLQo+IENDOiBKYW4gQmV1 bGljaCA8SkJldWxpY2hAc3VzZS5jb20+Cj4gQ0M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29u cmFkLndpbGtAb3JhY2xlLmNvbT4KPiBDQzogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNp dHJpeC5jb20+Cj4gQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Cj4gLS0tCj4gIHhl bi9hcmNoL3g4Ni9hbHRlcm5hdGl2ZS5jICAgICAgICAgICAgfCAzMiArKysrKysrKysrKysrKysr KysrKysrKystLS0tCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRpdmUtYXNtLmggfCA0 MCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ICB4ZW4vaW5jbHVkZS9hc20t eDg2L2FsdGVybmF0aXZlLmggICAgIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYWx0ZXJuYXRpdmUuYyBiL3hlbi9hcmNo L3g4Ni9hbHRlcm5hdGl2ZS5jCj4gaW5kZXggZjhkZGFiNS4uZWM4N2ZmNCAxMDA2NDQKPiAtLS0g YS94ZW4vYXJjaC94ODYvYWx0ZXJuYXRpdmUuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9hbHRlcm5h dGl2ZS5jCj4gQEAgLTE4MCwxMyArMTgwLDM3IEBAIHZvaWQgaW5pdF9vcl9saXZlcGF0Y2ggYXBw bHlfYWx0ZXJuYXRpdmVzKGNvbnN0IHN0cnVjdCBhbHRfaW5zdHIgKnN0YXJ0LAo+ICAgICAgICAg IHVpbnQ4X3QgKm9yaWcgPSBBTFRfT1JJR19QVFIoYSk7Cj4gICAgICAgICAgdWludDhfdCAqcmVw bCA9IEFMVF9SRVBMX1BUUihhKTsKPiAgICAgICAgICB1aW50OF90IGJ1ZltNQVhfUEFUQ0hfTEVO XTsKPiArICAgICAgICB1bnNpZ25lZCBpbnQgdG90YWxfbGVuID0gYS0+b3JpZ19sZW4gKyBhLT5w YWRfbGVuOwo+ICAKPiAtICAgICAgICBCVUdfT04oYS0+cmVwbF9sZW4gPiBhLT5vcmlnX2xlbik7 Cj4gLSAgICAgICAgQlVHX09OKGEtPm9yaWdfbGVuID4gc2l6ZW9mKGJ1ZikpOwo+ICsgICAgICAg IEJVR19PTihhLT5yZXBsX2xlbiA+IHRvdGFsX2xlbik7Cj4gKyAgICAgICAgQlVHX09OKHRvdGFs X2xlbiA+IHNpemVvZihidWYpKTsKPiAgICAgICAgICBCVUdfT04oYS0+Y3B1aWQgPj0gTkNBUElO VFMgKiAzMik7Cj4gIAo+ICAgICAgICAgIGlmICggIWJvb3RfY3B1X2hhcyhhLT5jcHVpZCkgKQo+ ICsgICAgICAgIHsKPiArICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7Cj4gKwo+ICsgICAgICAg ICAgICAvKiBObyByZXBsYWNlbWVudCB0byBtYWtlLCBidXQgdHJ5IHRvIG9wdGltaXNlIGFueSBw YWRkaW5nLiAqLwo+ICsgICAgICAgICAgICBpZiAoIGEtPnBhZF9sZW4gPD0gMSApCj4gKyAgICAg ICAgICAgICAgICBjb250aW51ZTsKPiArCj4gKyAgICAgICAgICAgIC8qIFNlYXJjaCB0aGUgcGFk ZGluZyBhcmVhIGZvciBhbnkgYnl0ZSB3aGljaCBpc24ndCBhIG5vcC4gKi8KPiArICAgICAgICAg ICAgZm9yICggaSA9IGEtPm9yaWdfbGVuOyBpIDwgdG90YWxfbGVuOyArK2kgKQo+ICsgICAgICAg ICAgICAgICAgaWYgKCBvcmlnW2ldICE9IDB4OTAgKQoKTWF5YmUgYmV0dGVyIHRvIGNvbXBhcmUg YWdhaW5zdCBBU01fTk9QMT8KCj4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsg ICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgKiBPbmx5IG1ha2UgYW55IGNoYW5nZXMgaWYg YWxsIHBhZGRpbmcgYnl0ZXMgYXJlIHVub3B0aW1pc2VkCj4gKyAgICAgICAgICAgICAqIG5vcHMu ICBXaXRoIG11bHRpcGxlIGFsdGVybmF0aXZlcyBvdmVyIHRoZSBzYW1lIG9yaWdpbiBzaXRlLCB3 ZQo+ICsgICAgICAgICAgICAgKiBtYXkgaGF2ZSBhbHJlYWR5IG1hZGUgYSByZXBsYWNlbWVudCwg b3Igb3B0aW1pc2VkIHRoZSBub3BzLgo+ICsgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAg aWYgKCBpICE9IHRvdGFsX2xlbiApCj4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsKPiArCj4g KyAgICAgICAgICAgIGFkZF9ub3BzKGJ1ZiwgYS0+cGFkX2xlbik7Cj4gKyAgICAgICAgICAgIHRl eHRfcG9rZShvcmlnICsgYS0+b3JpZ19sZW4sIGJ1ZiwgYS0+cGFkX2xlbik7Cj4gICAgICAgICAg ICAgIGNvbnRpbnVlOwo+ICsgICAgICAgIH0KPiAgCj4gICAgICAgICAgbWVtY3B5KGJ1ZiwgcmVw bCwgYS0+cmVwbF9sZW4pOwo+ICAKPiBAQCAtMTk0LDggKzIxOCw4IEBAIHZvaWQgaW5pdF9vcl9s aXZlcGF0Y2ggYXBwbHlfYWx0ZXJuYXRpdmVzKGNvbnN0IHN0cnVjdCBhbHRfaW5zdHIgKnN0YXJ0 LAo+ICAgICAgICAgIGlmICggYS0+cmVwbF9sZW4gPj0gNSAmJiAoKmJ1ZiAmIDB4ZmUpID09IDB4 ZTggKQo+ICAgICAgICAgICAgICAqKHMzMiAqKShidWYgKyAxKSArPSByZXBsIC0gb3JpZzsKPiAg Cj4gLSAgICAgICAgYWRkX25vcHMoYnVmICsgYS0+cmVwbF9sZW4sIGEtPm9yaWdfbGVuIC0gYS0+ cmVwbF9sZW4pOwo+IC0gICAgICAgIHRleHRfcG9rZShvcmlnLCBidWYsIGEtPm9yaWdfbGVuKTsK PiArICAgICAgICBhZGRfbm9wcyhidWYgKyBhLT5yZXBsX2xlbiwgdG90YWxfbGVuIC0gYS0+cmVw bF9sZW4pOwo+ICsgICAgICAgIHRleHRfcG9rZShvcmlnLCBidWYsIHRvdGFsX2xlbik7Cj4gICAg ICB9Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRp dmUtYXNtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2FsdGVybmF0aXZlLWFzbS5oCj4gaW5kZXgg MTUwYmQxYS4uZjdlMzdjYiAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2FsdGVy bmF0aXZlLWFzbS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9hbHRlcm5hdGl2ZS1hc20u aAo+IEBAIC05LDMwICs5LDQxIEBACj4gICAqIGVub3VnaCBpbmZvcm1hdGlvbiBmb3IgdGhlIGFs dGVybmF0aXZlcyBwYXRjaGluZyBjb2RlIHRvIHBhdGNoIGFuCj4gICAqIGluc3RydWN0aW9uLiBT ZWUgYXBwbHlfYWx0ZXJuYXRpdmVzKCkuCj4gICAqLwo+IC0ubWFjcm8gYWx0aW5zdHJ1Y3Rpb25f ZW50cnkgb3JpZyByZXBsIGZlYXR1cmUgb3JpZ19sZW4gcmVwbF9sZW4KPiArLm1hY3JvIGFsdGlu c3RydWN0aW9uX2VudHJ5IG9yaWcgcmVwbCBmZWF0dXJlIG9yaWdfbGVuIHJlcGxfbGVuIHBhZF9s ZW4KPiAgICAgIC5sb25nIFxvcmlnIC0gLgo+ICAgICAgLmxvbmcgXHJlcGwgLSAuCj4gICAgICAu d29yZCBcZmVhdHVyZQo+ICAgICAgLmJ5dGUgXG9yaWdfbGVuCj4gICAgICAuYnl0ZSBccmVwbF9s ZW4KPiArICAgIC5ieXRlIFxwYWRfbGVuCj4gIC5lbmRtCj4gIAo+ICAjZGVmaW5lIG9yaWdfbGVu ICAgICAgICAgICAgICAgKC5MXEBfb3JpZ19lICAgICAgIC0gICAgIC5MXEBfb3JpZ19zKQo+ICsj ZGVmaW5lIHBhZF9sZW4gICAgICAgICAgICAgICAgKC5MXEBfb3JpZ19wICAgICAgIC0gICAgIC5M XEBfb3JpZ19lKQo+ICsjZGVmaW5lIHRvdGFsX2xlbiAgICAgICAgICAgICAgKC5MXEBfb3JpZ19w ICAgICAgIC0gICAgIC5MXEBfb3JpZ19zKQo+ICAjZGVmaW5lIHJlcGxfbGVuKG5yKSAgICAgICAg ICAgKC5MXEBfcmVwbF9lXCgpbnIgIC0gICAgIC5MXEBfcmVwbF9zXCgpbnIpCj4gICNkZWZpbmUg ZGVjbF9yZXBsKGluc24sIG5yKSAgICAgLkxcQF9yZXBsX3NcKClucjogaW5zbjsgLkxcQF9yZXBs X2VcKClucjoKPiArI2RlZmluZSBnYXNfbWF4KGEsIGIpICAgICAgICAgICgoYSkgXiAoKChhKSBe IChiKSkgJiAtKC0oKGEpIDwgKGIpKSkpKQoKVGhhdCBzZWVtcyB0byB3b3JrIGZpbmUgYXQgbGVh c3Qgb24gbmV3aXNoIHZlcnNpb25zIG9mIGNsYW5nLCBzbyBJJ20Kbm90IHN1cmUgdGhlIGcgcHJl Zml4IGlzIHJlcXVpcmVkIChhc19tYXgpLgoKPiAgCj4gIC5tYWNybyBBTFRFUk5BVElWRSBvbGRp bnN0ciwgbmV3aW5zdHIsIGZlYXR1cmUKPiAgLkxcQF9vcmlnX3M6Cj4gICAgICBcb2xkaW5zdHIK PiAgLkxcQF9vcmlnX2U6Cj4gKyAgICAgLnNraXAgKC0oKHJlcGxfbGVuKDEpIC0gb3JpZ19sZW4p ID4gMCkgKiAocmVwbF9sZW4oMSkgLSBvcmlnX2xlbikpLCAweDkwCj4gKy5MXEBfb3JpZ19wOgo+ ICAKPiAgICAgIC5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLCAiYSIsIEBwcm9nYml0cwo+ ICAgICAgYWx0aW5zdHJ1Y3Rpb25fZW50cnkgLkxcQF9vcmlnX3MsIC5MXEBfcmVwbF9zMSwgXGZl YXR1cmUsIFwKPiAtICAgICAgICBvcmlnX2xlbiwgcmVwbF9sZW4oMSkKPiArICAgICAgICBvcmln X2xlbiwgcmVwbF9sZW4oMSksIHBhZF9sZW4KPiAgCj4gICAgICAuc2VjdGlvbiAuZGlzY2FyZCwg ImEiLCBAcHJvZ2JpdHMKPiAtICAgIC8qIEFzc2VtYmxlci10aW1lIGNoZWNrIHRoYXQgXG5ld2lu c3RyIGlzbid0IGxvbmdlciB0aGFuIFxvbGRpbnN0ci4gKi8KPiAtICAgIC5ieXRlIDB4ZmYgKyBy ZXBsX2xlbigxKSAtIG9yaWdfbGVuCj4gKyAgICAvKgo+ICsgICAgICogQXNzZW1ibGVyLXRpbWUg Y2hlY2tzOgo+ICsgICAgICogICAtIHRvdGFsX2xlbiA8PSAyNTUKPiArICAgICAqICAgLSBcbmV3 aW5zdHIgPD0gdG90YWxfbGVuCj4gKyAgICAgKi8KPiArICAgIC5ieXRlIHRvdGFsX2xlbgo+ICsg ICAgLmJ5dGUgMHhmZiArIHJlcGxfbGVuKDEpIC0gdG90YWxfbGVuCj4gIAo+ICAgICAgLnNlY3Rp b24gLmFsdGluc3RyX3JlcGxhY2VtZW50LCAiYXgiLCBAcHJvZ2JpdHMKPiAgCj4gQEAgLTQ1LDE4 ICs1NiwyNiBAQAo+ICAuTFxAX29yaWdfczoKPiAgICAgIFxvbGRpbnN0cgo+ICAuTFxAX29yaWdf ZToKPiArICAgIC5za2lwICgtKChnYXNfbWF4KHJlcGxfbGVuKDEpLCByZXBsX2xlbigyKSkgLSBv cmlnX2xlbikgPiAwKSAqIFwKPiArICAgICAgICAgICAgIChnYXNfbWF4KHJlcGxfbGVuKDEpLCBy ZXBsX2xlbigyKSkgLSBvcmlnX2xlbikpLCAweDkwCj4gKy5MXEBfb3JpZ19wOgo+ICAKPiAgICAg IC5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLCAiYSIsIEBwcm9nYml0cwo+ICAKPiAgICAg IGFsdGluc3RydWN0aW9uX2VudHJ5IC5MXEBfb3JpZ19zLCAuTFxAX3JlcGxfczEsIFxmZWF0dXJl MSwgXAo+IC0gICAgICAgIG9yaWdfbGVuLCByZXBsX2xlbigxKQo+ICsgICAgICAgIG9yaWdfbGVu LCByZXBsX2xlbigxKSwgcGFkX2xlbgo+ICAgICAgYWx0aW5zdHJ1Y3Rpb25fZW50cnkgLkxcQF9v cmlnX3MsIC5MXEBfcmVwbF9zMiwgXGZlYXR1cmUyLCBcCj4gLSAgICAgICAgb3JpZ19sZW4sIHJl cGxfbGVuKDIpCj4gKyAgICAgICAgb3JpZ19sZW4sIHJlcGxfbGVuKDIpLCBwYWRfbGVuCj4gIAo+ ICAgICAgLnNlY3Rpb24gLmRpc2NhcmQsICJhIiwgQHByb2diaXRzCj4gLSAgICAvKiBBc3NlbWJs ZXItdGltZSBjaGVjayB0aGF0IFxuZXdpbnN0cnsxLDJ9IGFyZW4ndCBsb25nZXIgdGhhbiBcb2xk aW5zdHIuICovCj4gLSAgICAuYnl0ZSAweGZmICsgcmVwbF9sZW4oMSkgLSBvcmlnX2xlbgo+IC0g ICAgLmJ5dGUgMHhmZiArIHJlcGxfbGVuKDIpIC0gb3JpZ19sZW4KPiArICAgIC8qCj4gKyAgICAg KiBBc3NlbWJsZXItdGltZSBjaGVja3M6Cj4gKyAgICAgKiAgIC0gdG90YWxfbGVuIDw9IDI1NQo+ ICsgICAgICogICAtIFxuZXdpbnN0ciogPD0gdG90YWxfbGVuCj4gKyAgICAgKi8KPiArICAgIC5i eXRlIHRvdGFsX2xlbgo+ICsgICAgLmJ5dGUgMHhmZiArIHJlcGxfbGVuKDEpIC0gdG90YWxfbGVu Cj4gKyAgICAuYnl0ZSAweGZmICsgcmVwbF9sZW4oMikgLSB0b3RhbF9sZW4KPiAgCj4gICAgICAu c2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFjZW1lbnQsICJheCIsIEBwcm9nYml0cwo+ICAKPiBAQCAt NjYsOCArODUsMTEgQEAKPiAgICAgIC5wb3BzZWN0aW9uCj4gIC5lbmRtCj4gIAo+ICsjdW5kZWYg Z2FzX21heAo+ICAjdW5kZWYgZGVjbF9yZXBsCj4gICN1bmRlZiByZXBsX2xlbgo+ICsjdW5kZWYg dG90YWxfbGVuCj4gKyN1bmRlZiBwYWRfbGVuCj4gICN1bmRlZiBvcmlnX2xlbgo+ICAKPiAgI2Vu ZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2 L2FsdGVybmF0aXZlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2FsdGVybmF0aXZlLmgKPiBpbmRl eCAxZTVjZmJkLi4yMGRlYTIyIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvYWx0 ZXJuYXRpdmUuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRpdmUuaAo+IEBA IC04LDEyICs4LDEzIEBACj4gICNpbmNsdWRlIDx4ZW4vc3RyaW5naWZ5Lmg+Cj4gICNpbmNsdWRl IDx4ZW4vdHlwZXMuaD4KPiAgCj4gLXN0cnVjdCBhbHRfaW5zdHIgewo+ICtzdHJ1Y3QgX19wYWNr ZWQgYWx0X2luc3RyIHsKPiAgICAgIGludDMyX3QgIG9yaWdfb2Zmc2V0OyAgIC8qIG9yaWdpbmFs IGluc3RydWN0aW9uICovCj4gICAgICBpbnQzMl90ICByZXBsX29mZnNldDsgICAvKiBvZmZzZXQg dG8gcmVwbGFjZW1lbnQgaW5zdHJ1Y3Rpb24gKi8KPiAgICAgIHVpbnQxNl90IGNwdWlkOyAgICAg ICAgIC8qIGNwdWlkIGJpdCBzZXQgZm9yIHJlcGxhY2VtZW50ICovCj4gICAgICB1aW50OF90ICBv cmlnX2xlbjsgICAgICAvKiBsZW5ndGggb2Ygb3JpZ2luYWwgaW5zdHJ1Y3Rpb24gKi8KPiAtICAg IHVpbnQ4X3QgIHJlcGxfbGVuOyAgICAgIC8qIGxlbmd0aCBvZiBuZXcgaW5zdHJ1Y3Rpb24sIDw9 IGluc3RybGVuICovCj4gKyAgICB1aW50OF90ICByZXBsX2xlbjsgICAgICAvKiBsZW5ndGggb2Yg bmV3IGluc3RydWN0aW9uICovCj4gKyAgICB1aW50OF90ICBwYWRfbGVuOyAgICAgICAvKiBsZW5n dGggb2YgYnVpbGQtdGltZSBwYWRkaW5nICovCj4gIH07Cj4gIAo+ICAjZGVmaW5lIF9fQUxUX1BU UihhLGYpICAgICAgKCh1OCAqKSgodm9pZCAqKSYoYSktPmYgKyAoYSktPmYpKQo+IEBAIC0yNiw0 NCArMjcsNjQgQEAgZXh0ZXJuIHZvaWQgYXBwbHlfYWx0ZXJuYXRpdmVzKGNvbnN0IHN0cnVjdCBh bHRfaW5zdHIgKnN0YXJ0LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGFsdF9pbnN0ciAqZW5kKTsKPiAgZXh0ZXJuIHZvaWQgYWx0ZXJuYXRpdmVfaW5zdHJ1 Y3Rpb25zKHZvaWQpOwo+ICAKPiAtI2RlZmluZSBPTERJTlNUUihvbGRpbnN0cikgICAgICAiLkwl PV9vcmlnX3M6XG5cdCIgb2xkaW5zdHIgIlxuLkwlPV9vcmlnX2U6XG4iCj4gLQo+ICAjZGVmaW5l IHJlcGxfcyhudW0pICAgICAgICAgICAgICIuTCU9X3JlcGxfcyIjbnVtCj4gICNkZWZpbmUgcmVw bF9lKG51bSkgICAgICAgICAgICAgIi5MJT1fcmVwbF9lIiNudW0KPiAgCj4gICNkZWZpbmUgYWx0 X29yaWdfbGVuICAgICAgICAgICAgIiguTCU9X29yaWdfZSAtIC5MJT1fb3JpZ19zKSIKPiArI2Rl ZmluZSBhbHRfcGFkX2xlbiAgICAgICAgICAgICAiKC5MJT1fb3JpZ19wIC0gLkwlPV9vcmlnX2Up Igo+ICsjZGVmaW5lIGFsdF90b3RhbF9sZW4gICAgICAgICAgICIoLkwlPV9vcmlnX3AgLSAuTCU9 X29yaWdfcykiCj4gICNkZWZpbmUgYWx0X3JlcGxfbGVuKG51bSkgICAgICAgIigiIHJlcGxfZShu dW0pICIgLSAiIHJlcGxfcyhudW0pICIpIgo+ICsjZGVmaW5lIGdhc19tYXgoYSwgYikgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICIoKCIgYSAiKSBeICgo KCIgYSAiKSBeICgiIGIgIikpICYgLSgtKCgiIGEgIikgPCAoIiBiICIpKSkpKSIKPiArCj4gKyNk ZWZpbmUgT0xESU5TVFJfMShvbGRpbnN0ciwgbjEpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAo+ICsgICAgIi5MJT1fb3JpZ19zOlxuXHQiIG9sZGluc3RyICJcbiAuTCU9X29yaWdfZTpc blx0IiAgICAgICAgIFwKPiArICAgICIuc2tpcCAoLSgoImFsdF9yZXBsX2xlbihuMSkiLSJhbHRf b3JpZ19sZW4iKSA+IDApICogIiAgICBcCj4gKyAgICAgICAgICAgICAiKCJhbHRfcmVwbF9sZW4o bjEpIi0iYWx0X29yaWdfbGVuIikpLCAweDkwXG5cdCIgXAoKQVNNX05PUDEgaW5zdGVhZCBvZiAw eDkwPwoKVGhhbmtzLCBSb2dlci4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94 ZW4tZGV2ZWw=