From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex =?utf-8?Q?Benn=C3=A9e?= Subject: Re: [RFC PATCH v2 13/23] KVM: arm64/sve: Context switch the SVE registers Date: Tue, 20 Nov 2018 12:25:12 +0000 Message-ID: <87o9akhr6f.fsf@linaro.org> References: <1538141967-15375-1-git-send-email-Dave.Martin@arm.com> <1538141967-15375-14-git-send-email-Dave.Martin@arm.com> <87sgzxhvny.fsf@linaro.org> <20181119170303.GX3505@e103592.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id BF2CE4A2F8 for ; Tue, 20 Nov 2018 07:25:16 -0500 (EST) Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ei34-NLf0mEn for ; Tue, 20 Nov 2018 07:25:15 -0500 (EST) Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 725AA4A2E5 for ; Tue, 20 Nov 2018 07:25:15 -0500 (EST) Received: by mail-wm1-f68.google.com with SMTP id r63-v6so1939290wma.4 for ; Tue, 20 Nov 2018 04:25:15 -0800 (PST) In-reply-to: <20181119170303.GX3505@e103592.cambridge.arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu To: Dave Martin Cc: Okamoto Takayuki , Christoffer Dall , Ard Biesheuvel , Marc Zyngier , Catalin Marinas , Will Deacon , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org List-Id: kvmarm@lists.cs.columbia.edu CkRhdmUgTWFydGluIDxEYXZlLk1hcnRpbkBhcm0uY29tPiB3cml0ZXM6Cgo+IE9uIE1vbiwgTm92 IDE5LCAyMDE4IGF0IDA0OjM2OjAxUE0gKzAwMDAsIEFsZXggQmVubsOpZSB3cm90ZToKPj4KPj4g RGF2ZSBNYXJ0aW4gPERhdmUuTWFydGluQGFybS5jb20+IHdyaXRlczoKPj4KPj4gPiBJbiBvcmRl ciB0byBnaXZlIGVhY2ggdmNwdSBpdHMgb3duIHZpZXcgb2YgdGhlIFNWRSByZWdpc3RlcnMsIHRo aXMKPj4gPiBwYXRjaCBhZGRzIGNvbnRleHQgc3RvcmFnZSB2aWEgYSBuZXcgc3ZlX3N0YXRlIHBv aW50ZXIgaW4gc3RydWN0Cj4+ID4gdmNwdV9hcmNoLiAgQW4gYWRkaXRpb25hbCBtZW1iZXIgc3Zl X21heF92bCBpcyBhbHNvIGFkZGVkIGZvciBlYWNoCj4+ID4gdmNwdSwgdG8gZGV0ZXJtaW5lIHRo ZSBtYXhpbXVtIHZlY3RvciBsZW5ndGggdmlzaWJsZSB0byB0aGUgZ3Vlc3QKPj4gPiBhbmQgdGh1 cyB0aGUgdmFsdWUgdG8gYmUgY29uZmlndXJlZCBpbiBaQ1JfRUwyLkxFTiB3aGlsZSB0aGUgaXMK Pj4gPiBhY3RpdmUuICBUaGlzIGFsc28gZGV0ZXJtaW5lcyB0aGUgbGF5b3V0IGFuZCBzaXplIG9m IHRoZSBzdG9yYWdlIGluCj4+ID4gc3ZlX3N0YXRlLCB3aGljaCBpcyByZWFkIGFuZCB3cml0dGVu IGJ5IHRoZSBzYW1lIGJhY2tlbmQgZnVuY3Rpb25zCj4+ID4gdGhhdCBhcmUgdXNlZCBmb3IgY29u dGV4dC1zd2l0Y2hpbmcgdGhlIFNWRSBzdGF0ZSBmb3IgaG9zdCB0YXNrcy4KPj4gPgo+PiA+IE9u IFNWRS1lbmFibGVkIHZjcHVzLCBTVkUgYWNjZXNzIHRyYXBzIGFyZSBub3cgaGFuZGxlZCBieSBz d2l0Y2hpbmcKPj4gPiBpbiB0aGUgdmNwdSdzIFNWRSBjb250ZXh0IGFuZCBkaXNhYmxpbmcgdGhl IHRyYXAgYmVmb3JlIHJldHVybmluZwo+PiA+IHRvIHRoZSBndWVzdC4gIE9uIG90aGVyIHZjcHVz LCB0aGUgdHJhcCBpcyBub3QgaGFuZGxlZCBhbmQgYW4gZXhpdAo+PiA+IGJhY2sgdG8gdGhlIGhv c3Qgb2NjdXJzLCB3aGVyZSB0aGUgaGFuZGxlX3N2ZSgpIGZhbGxiYWNrIHBhdGgKPj4gPiByZWZs ZWN0cyBhbiB1bmRlZmluZWQgaW5zdHJ1Y3Rpb24gZXhjZXB0aW9uIGJhY2sgdG8gdGhlIGd1ZXN0 LAo+PiA+IGNvbnNpc3RlbnRseSB3aXRoIHRoZSBiZWhhdmlvdXIgb2Ygbm9uLVNWRS1jYXBhYmxl IGhhcmR3YXJlIChhcyB3YXMKPj4gPiBkb25lIHVuY29uZGl0aW9uYWxseSBwcmlvciB0byB0aGlz IHBhdGNoKS4KPj4gPgo+PiA+IE5vIFNWRSBoYW5kbGluZyBpcyBhZGRlZCBvbiBub24tVkhFLW9u bHkgcGF0aHMsIHNpbmNlIFZIRSBpcyBhbgo+PiA+IGFyY2hpdGVjdHVyYWwgYW5kIEtjb25maWcg cHJlcmVxdWlzaXRlIG9mIFNWRS4KPj4gPgo+PiA+IFNpZ25lZC1vZmYtYnk6IERhdmUgTWFydGlu IDxEYXZlLk1hcnRpbkBhcm0uY29tPgo+Cj4gWy4uLl0KPgo+PiA+IGRpZmYgLS1naXQgYS9hcmNo L2FybTY0L2t2bS9oeXAvc3dpdGNoLmMgYi9hcmNoL2FybTY0L2t2bS9oeXAvc3dpdGNoLmMKPj4g PiBpbmRleCAwODVlZDA2Li45OTQxMzQ5IDEwMDY0NAo+PiA+IC0tLSBhL2FyY2gvYXJtNjQva3Zt L2h5cC9zd2l0Y2guYwo+PiA+ICsrKyBiL2FyY2gvYXJtNjQva3ZtL2h5cC9zd2l0Y2guYwo+Cj4g Wy4uLl0KPgo+PiA+IEBAIC0zODAsNiArMzk4LDI2IEBAIHN0YXRpYyBib29sIF9faHlwX3RleHQg X19oeXBfc3dpdGNoX2Zwc2ltZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCj4+ID4gIAlyZXR1cm4g dHJ1ZTsKPj4gPiAgfQo+PiA+Cj4+ID4gK3N0YXRpYyBpbmxpbmUgYm9vbCBfX2h5cF90ZXh0IF9f aHlwX3RyYXBfaXNfZnBzaW1kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKPj4gPiArCQkJCQkJICAg Ym9vbCBndWVzdF9oYXNfc3ZlKQo+PiA+ICt7Cj4+ID4gKwo+PiA+ICsJdTggdHJhcF9jbGFzczsK Pj4gPiArCj4+ID4gKwlpZiAoIXN5c3RlbV9zdXBwb3J0c19mcHNpbWQoKSkKPj4gPiArCQlyZXR1 cm4gZmFsc2U7Cj4+ID4gKwo+PiA+ICsJdHJhcF9jbGFzcyA9IGt2bV92Y3B1X3RyYXBfZ2V0X2Ns YXNzKHZjcHUpOwo+PiA+ICsKPj4gPiArCWlmICh0cmFwX2NsYXNzID09IEVTUl9FTHhfRUNfRlBf QVNJTUQpCj4+ID4gKwkJcmV0dXJuIHRydWU7Cj4+ID4gKwo+PiA+ICsJaWZfc3ZlIChndWVzdF9o YXNfc3ZlICYmIHRyYXBfY2xhc3MgPT0gRVNSX0VMeF9FQ19TVkUpCj4+ID4gKwkJcmV0dXJuIHRy dWU7Cj4+Cj4+IERvIHdlIHJlYWxseSBuZWVkIHRvIGNoZWNrIHRoZSBndWVzdCBoYXMgU1ZFIGJl Zm9yZSBiZWxpZXZpbmcgd2hhdCB0aGUKPj4gaGFyZHdhcmUgaXMgdGVsbGluZyB1cz8gQWNjb3Jk aW5nIHRvIHRoZSBBUk0gQVJNOgo+Pgo+PiBGb3IgRVNSX0VMeF9FQ19GUF9BU0lNRAo+Pgo+PiAg IEV4Y2x1ZGVzIGV4Y2VwdGlvbnMgcmVzdWx0aW5nIGZyb20gQ1BBQ1JfRUwxIHdoZW4gdGhlIHZh bHVlIG9mIEhDUl9FTDIuVEdFIGlzCj4+ICAgMSwgb3IgYmVjYXVzZSBTVkUgb3IgQWR2YW5jZWQg U0lNRCBhbmQgZmxvYXRpbmctcG9pbnQgYXJlIG5vdCBpbXBsZW1lbnRlZC4gVGhlc2UKPj4gICBh cmUgcmVwb3J0ZWQgd2l0aCBFQyB2YWx1ZSAwYjAwMDAwMAo+Pgo+PiBCdXQgYWxzbyBmb3IgRVNS X0VMeF9FQ19TVkUKPj4KPj4gICBBY2Nlc3MgdG8gU1ZFIGZ1bmN0aW9uYWxpdHkgdHJhcHBlZCBh cyBhIHJlc3VsdCBvZiBDUEFDUl9FTDEuWkVOLAo+PiAgIENQVFJfRUwyLlpFTiwgQ1BUUl9FTDIu VFosIG9yIENQVFJfRUwzLkVaLCB0aGF0IGlzIG5vdCByZXBvcnRlZCB1c2luZyBFQwo+PiAgIDBi MDAwMDAwLiBUaGlzIEVDIGlzIGRlZmluZWQgb25seSBpZiBTVkUgaXMgaW1wbGVtZW50ZWQKPj4K Pj4gR2l2ZW4gSSBnb3QgY29uZnVzZWQgbWF5YmUgd2UgbmVlZCBhIGNvbW1lbnQgZm9yIGNsYXJp dHk/Cj4KPiBUaGlzIGlzIG5vdCBhYm91dCBub3QgdHJ1c3RpbmcgdGhlIHZhbHVlIEVTUl9FTHhf RUNfU1ZFIG9uIG9sZGVyCj4gaGFyZHdhcmU6IGluIGVmZmVjdCBpdCBpcyByZXRyb3NwZWN0aXZl bHkgcmVzZXJ2ZWQgZm9yIHRoaXMgcHVycG9zZSBvbgo+IGFsbCBvbGRlciBhcmNoIHZlcnNpb25z LCBzbyB0aGVyZSBpcyBubyBhbWJpZ3VpdHkgYWJvdXQgd2hhdCBpdCBtZWFucy4KPiBJdCBzaG91 bGQgbmV2ZXIgYmUgb2JzZXJ2ZWQgb24gaGFyZHdhcmUgdGhhdCBkb2Vzbid0IGhhdmUgU1ZFLgo+ Cj4gUmF0aGVyLCBob3cgd2UgaGFuZGxlIHRoaXMgdHJhcCBkaWZmZXJzIGRlcGVuZGluZyBvbiB3 aGV0aGVyIHRoZSBndWVzdAo+IGlzIFNWRS1lbmFibGVkIG9yIG5vdC4gIElmIG5vdCwgdGhlbiB0 aGlzIHRyYXAgaXMgaGFuZGxlZCBieSB0aGUgZ2VuZXJpYwo+IGZhbGxiYWNrIHBhdGggZm9yIHVu aGFuZGxlZCBndWVzdCB0cmFwcywgc28gd2UgZG9uJ3QgY2hlY2sgZm9yIHRoaXMKPiBwYXJ0aWN1 bGFyIEVDIHZhbHVlIGV4cGxpY2l0bHkgaW4gdGhhdCBjYXNlLgo+Cj4+ICAgLyogQ2F0Y2ggZ3Vl c3RzIHdpdGhvdXQgU1ZFIGVuYWJsZWQgcnVubmluZyBvbiBTVkUgY2FwYWJsZSBoYXJkd2FyZSAq Lwo+Cj4gSSBtaWdodCB3cml0ZSBzb21ldGhpbmcgbGlrZToKPgo+IAkvKgo+IAkgKiBGb3Igc3Zl LWVubWFibGVkIGd1ZXN0cyBvbmx5LCBoYW5kbGUgU1ZFIGFjY2VzcyB2aWEgRlBTSU1ECj4gCSAq IGNvbnRleHQgaGFuZGxpbmcgY29kZS4KPiAJICovCj4KPiBEb2VzIHRoYXQgbWFrZSBzZW5zZT8g IEkgbWF5IGhhdmUgbWlzdW5kZXJzdG9vZCB5b3VyIGNvbmNlcm4gaGVyZS4KCnMvZW5tYWJsZWQv ZW5hYmxlZC8gYnV0IHllYWggdGhhdCdzIGZpbmUuCgo+Cj4gWy4uLl0KPgo+PiA+IEBAIC0zODcs NiArNDI1LDggQEAgc3RhdGljIGJvb2wgX19oeXBfdGV4dCBfX2h5cF9zd2l0Y2hfZnBzaW1kKHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkKPj4gPiAgICovCj4+ID4gIHN0YXRpYyBib29sIF9faHlwX3Rl eHQgZml4dXBfZ3Vlc3RfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCAqZXhpdF9jb2Rl KQo+PiA+ICB7Cj4+ID4gKwlib29sIGd1ZXN0X2hhc19zdmU7Cj4+ID4gKwo+PiA+ICAJaWYgKEFS TV9FWENFUFRJT05fQ09ERSgqZXhpdF9jb2RlKSAhPSBBUk1fRVhDRVBUSU9OX0lSUSkKPj4gPiAg CQl2Y3B1LT5hcmNoLmZhdWx0LmVzcl9lbDIgPSByZWFkX3N5c3JlZ19lbDIoZXNyKTsKPj4gPgo+ PiA+IEBAIC00MDQsMTAgKzQ0NCwxMSBAQCBzdGF0aWMgYm9vbCBfX2h5cF90ZXh0IGZpeHVwX2d1 ZXN0X2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgKmV4aXRfY29kZSkKPj4gPiAgCSAq IGFuZCByZXN0b3JlIHRoZSBndWVzdCBjb250ZXh0IGxhemlseS4KPj4gPiAgCSAqIElmIEZQL1NJ TUQgaXMgbm90IGltcGxlbWVudGVkLCBoYW5kbGUgdGhlIHRyYXAgYW5kIGluamVjdCBhbgo+PiA+ ICAJICogdW5kZWZpbmVkIGluc3RydWN0aW9uIGV4Y2VwdGlvbiB0byB0aGUgZ3Vlc3QuCj4+ID4g KwkgKiBTaW1pbGFybHkgZm9yIHRyYXBwZWQgU1ZFIGFjY2Vzc2VzLgo+PiA+ICAJICovCj4+ID4g LQlpZiAoc3lzdGVtX3N1cHBvcnRzX2Zwc2ltZCgpICYmCj4+ID4gLQkgICAga3ZtX3ZjcHVfdHJh cF9nZXRfY2xhc3ModmNwdSkgPT0gRVNSX0VMeF9FQ19GUF9BU0lNRCkKPj4gPiAtCQlyZXR1cm4g X19oeXBfc3dpdGNoX2Zwc2ltZCh2Y3B1KTsKPj4gPiArCWd1ZXN0X2hhc19zdmUgPSB2Y3B1X2hh c19zdmUodmNwdSk7Cj4+Cj4+IEknbSBub3Qgc3VyZSBpZiBpdCdzIHdvcnRoIGZpc2hpbmcgdGhp cyBvdXQgaGVyZSBnaXZlbiB5b3UgYXJlIGFscmVhZHkKPj4gcGFzc2luZyB2Y3B1IGRvd24gdGhl IGNoYWluLgo+Cj4gSSB3YW50ZWQgdG8gZGlzY291cmFnZSBHQ0MgZnJvbSByZWNvbXB1dGluZyB0 aGlzLiAgSWYgeW91J3JlIGluIGEKPiBwb3NpdGlvbiB0byBkbyBzbywgY2FuIHlvdSBsb29rIGF0 IHRoZSBkaXNhc3NlbWJseSB3aXRoL3dpdGhvdXQgdGhpcwo+IGZhY3RvcmVkIG91dCBhbmQgc2Vl IHdoZXRoZXIgaXQgbWFrZXMgYSBkaWZmZXJlbmNlPwoKSG1tIGl0IGlzIGhhcmQgdG8gdGVsbC4g VGhlcmUgaXMgY29kZSBtb3Rpb24gYnV0IGZvciBzb21lIHJlYXNvbiBJJ20Kc2VlaW5nIHRoZSBz dGF0aWMganVtcCBjb2RlIHVucm9sbGVkLCBmb3IgZXhhbXBsZSAob3JpZ2luYWwgb24gbGVmdCk6 CgpfX2h5cF9zd2l0Y2hfZnBzaW1kKCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19oeXBfc3dpdGNoX2Zwc2ltZCgpOgov aG9tZS9hbGV4L2xzcmMva3ZtL2xpbnV4LmdpdC9hcmNoL2FybTY0L2t2bS9oeXAvc3dpdGNoLi0t LS06MzgyICAgICAgICAgICAgICAgICAgICAgIHwgL2hvbWUvYWxleC9sc3JjL2t2bS9saW51eC5n aXQvYXJjaC9hcm02NC9rdm0vaHlwL3N3aXRjaC4tLS0tOjM4MQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID4gIC0tLS06ICB0c3QgICAgIHcwLCAjMHg0MDAwMDAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA+ICAtLS0tOiAgYi5lcSAgICAyMmMgPGZpeHVwX2d1ZXN0X2V4aXQrMHgx YTQ+ICAvLyBiLm5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IGFyY2hfc3RhdGlj X2JyYW5jaF9qdW1wKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAvaG9tZS9hbGV4 L2xzcmMva3ZtL2xpbnV4LmdpdC9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaDo0 NQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gIC0tLS06ICBiICAgICAgIDM4YyA8Zml4 dXBfZ3Vlc3RfZXhpdCsweDMwND4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IGFyY2hf c3RhdGljX2JyYW5jaCgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gL2hvbWUvYWxl eC9sc3JjL2t2bS9saW51eC5naXQvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9qdW1wX2xhYmVsLmg6 MzEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICAtLS0tOiAgbm9wCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPiAgLS0tLTogIGIgICAgICAgMjJjIDxmaXh1cF9ndWVzdF9leGl0 KzB4MWE0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gdGVzdF9iaXQoKToKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA+IC9ob21lL2FsZXgvbHNyYy9rdm0vbGludXguZ2l0L2lu Y2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL25vbi1hdG9taWMuaDoxMDYKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA+ICAtLS0tOiAgYWRycCAgICB4MCwgMCA8Y3B1X2h3Y2Fwcz4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA+ICAtLS0tOiAgbGRyICAgICB4MCwgW3gwXQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgID4gX19oeXBfc3dpdGNoX2Zwc2ltZCgpOgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgID4gL2hvbWUvYWxleC9sc3JjL2t2bS9saW51eC5naXQvYXJjaC9h cm02NC9rdm0vaHlwL3N3aXRjaC4tLS0tOjM4MQogLS0tLTogIHRzdCAgICAgdzAsICMweDQwMDAw MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tLS06ICB0c3QgICAgIHcwLCAjMHg0MDAwMDAKIC0tLS06ICBiLmVxICAgIDIzOCA8Zml4 dXBfZ3Vlc3RfZXhpdCsweDFiMD4gIC8vIGIubm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAtLS0tOiAgYi5lcSAgICAyMmMgPGZpeHVwX2d1ZXN0X2V4aXQrMHgxYTQ+ICAvLyBi Lm5vbmUKIC0tLS06ICBjYnogICAgIHcyMSwgMjM4IDxmaXh1cF9ndWVzdF9leGl0KzB4MWIwPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAtLS0tOiAgdGJ6ICAgICB3Miwg IzUsIDIyYyA8Zml4dXBfZ3Vlc3RfZXhpdCsweDFhND4KL2hvbWUvYWxleC9sc3JjL2t2bS9saW51 eC5naXQvYXJjaC9hcm02NC9rdm0vaHlwL3N3aXRjaC4tLS0tOjM4MyAgICAgICAgICAgICAgICAg ICAgICB8IC9ob21lL2FsZXgvbHNyYy9rdm0vbGludXguZ2l0L2FyY2gvYXJtNjQva3ZtL2h5cC9z d2l0Y2guLS0tLTozODIKIC0tLS06ICBsZHIgICAgIHcyLCBbeDE5LCAjMjA0MF0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAtLS0tOiAgbGRy ICAgICB3MiwgW3gyMCwgIzIwNDBdCiAtLS0tOiAgYWRkICAgICB4MSwgeDE5LCAjMHg0YjAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgLS0t LTogIGFkZCAgICAgeDEsIHgyMCwgIzB4NGIwCiAtLS0tOiAgbGRyICAgICB4MCwgW3gxOSwgIzIw MzJdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgLS0tLTogIGxkciAgICAgeDAsIFt4MjAsICMyMDMyXQpzdmVfZmZyX29mZnNldCgpOiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3ZlX2Zmcl9vZmZzZXQoKToKClB1dCBjYWxjdWxhdGluZyBndWVzdF9oYXNfc3Zl IGF0IHRoZSB0b3Agb2YgX19oeXBfc3dpdGNoX2Zwc2ltZCBtYWtlCm1vc3Qgb2YgdGhhdCBnbyBh d2F5IGFuZCBqdXN0IG1vdmVzIHRoaW5ncyBhcm91bmQgYSBsaXR0bGUgYml0LiBTbyBJCmd1ZXNz IGl0IGNvdWxkIG1ha2VzIHNlbnNlIGZvciB0aGUgZmFzdChpc2gpIHBhdGggYWx0aG91Z2ggSSdk IGJlCmludGVyZXN0ZWQgaW4ga25vd2luZyBpZiBpdCBtYWRlIGFueSByZWFsIGRpZmZlcmVuY2Ug dG8gdGhlIG51bWJlcnMuCkFmdGVyIGFsbCB0aGUgZmlyc3QgcmVhZCBzaG91bGQgYmUgd2VsbCBj YWNoZWQgYW5kIG1vdmluZyBpdCB0aHJvdWdoIHRoZQpzdGFjayBpcyBqdXN0IGFkZGl0aW9uYWwg bWVtb3J5IGFuZCByZWdpc3RlciBwcmVzc3VyZS4KCj4+Cj4+ID4gKwlpZiAoX19oeXBfdHJhcF9p c19mcHNpbWQodmNwdSwgZ3Vlc3RfaGFzX3N2ZSkpCj4+ID4gKwkJcmV0dXJuIF9faHlwX3N3aXRj aF9mcHNpbWQodmNwdSwgZ3Vlc3RfaGFzX3N2ZSk7Cj4+ID4KPj4gPiAgCWlmICghX19wb3B1bGF0 ZV9mYXVsdF9pbmZvKHZjcHUpKQo+PiA+ICAJCXJldHVybiB0cnVlOwo+Pgo+PiBPdGhlcndpc2U6 Cj4+Cj4+IFJldmlld2VkLWJ5OiBBbGV4IEJlbm7DqWUgPGFsZXguYmVubmVlQGxpbmFyby5vcmc+ Cj4KPiBUaGFua3MKPiAtLS1EYXZlCgoKLS0KQWxleCBCZW5uw6llCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmt2bWFybSBtYWlsaW5nIGxpc3QKa3ZtYXJt QGxpc3RzLmNzLmNvbHVtYmlhLmVkdQpodHRwczovL2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9tYWls bWFuL2xpc3RpbmZvL2t2bWFybQo=