Re: [RFC] RISC-V KVM: guest local sfence.vma may miss stale VS-stage TLB after vCPU migration

Guo Ren <[email protected]> Mon, 3 Aug 2026 13:51:04 -0400
Newsgroups org.infradead.lists.linux-riscv,org.infradead.lists.kvm-riscv,org.kernel.vger.kvm,org.kernel.vger.linux-kernel
Message-ID <anDVCJftl9Ag/[email protected]>
T24gTW9uLCBBdWcgMDMsIDIwMjYgYXQgMDE6MTk6NDdQTSAtMDQwMCwgR3VvIFJlbiB3cm90ZToK
PiBPbiBNb24sIEF1ZyAwMywgMjAyNiBhdCAwNzo1MjoxNFBNICswNTMwLCBBbnVwIFBhdGVsIHdy
b3RlOgo+ID4gT24gU3VuLCBBdWcgMiwgMjAyNiBhdCAxMDozMOKAr0FNIFlheGluZyBHdW8gPGd1
b3lheGluZ0Bib3NjLmFjLmNuPiB3cm90ZToKPiA+ID4KPiA+ID4gSGkgYWxsLAo+ID4gPgo+ID4g
PiBJIHdvdWxkIGxpa2UgdG8gYXNrIHdoZXRoZXIgUklTQy1WIEtWTSBoYXMgYSBnYXAgYXJvdW5k
IGd1ZXN0IHNmZW5jZS52bWEKPiA+ID4gYW5kIFZTLXN0YWdlIFRMQiBpbnZhbGlkYXRpb24gd2hl
biBhIHZDUFUgbWlncmF0ZXMgYWNyb3NzIGhvc3QgQ1BVcy4KPiA+ID4KPiA+ID4gT24gYmFyZSBt
ZXRhbCwgTGludXggdXNlcyBtbV9jcHVtYXNrIGluIF9fZmx1c2hfdGxiX3JhbmdlKCkgdG8gZGVj
aWRlCj4gPiA+IHdoZXRoZXIgdG8gc2VuZCBhIGxvY2FsIG9yIHJlbW90ZSBzZmVuY2Uudm1hLiBU
aGF0IHdvcmtzIGJlY2F1c2UgdGhlIGNwdW1hc2sKPiA+ID4gcmVmbGVjdHMgcGh5c2ljYWwgQ1BV
cy4gSW4gYSBndWVzdCwgaG93ZXZlciwgdGhlIGtlcm5lbCBvbmx5IHNlZXMgdkNQVXMsIHNvCj4g
PiA+IGZyb20gdGhlIGd1ZXN0IHBvaW50IG9mIHZpZXcgYSB0YXNrIG1heSBuZXZlciAibWlncmF0
ZSIgZXZlbiB0aG91Z2ggdGhlCj4gPiA+IHVuZGVybHlpbmcgdkNQVSBtb3ZlZCB0byBhIGRpZmZl
cmVudCBob3N0IENQVS4gSW4gb3RoZXIgd29yZHMsIGd1ZXN0Cj4gPiA+IG1tX2NwdW1hc2sgaXMg
ZWZmZWN0aXZlbHkgYSB2Q1BVIG1hc2ssIG5vdCBhIGhvc3QgQ1BVIG1hc2suCj4gPiA+Cj4gPiA+
IFRoZXJlIGlzIGFsc28gYSByZWxhdGVkIHN3aXRjaF9tbSgpL3NldF9tbV9hc2lkKCkgYXNwZWN0
LiBXaXRoIHRoZSBBU0lECj4gPiA+IGFsbG9jYXRvciBlbmFibGVkLCBSSVNDLVYgTGludXggZG9l
cyBub3QgZmx1c2ggb24gZXZlcnkgY29udGV4dCBzd2l0Y2guIEEKPiA+ID4gbG9jYWxfZmx1c2hf
dGxiX2FsbCgpIGlzIG9ubHkgZG9uZSB3aGVuIGEgZGVmZXJyZWQgQVNJRCByb2xsb3ZlciBmbHVz
aCBpcwo+ID4gPiBwZW5kaW5nIGZvciB0aGUgY3VycmVudCBDUFUuIFRoYXQgaXMgZmluZSBvbiBi
YXJlIG1ldGFsLCBiZWNhdXNlIHByZXZpb3VzCj4gPiA+IHNob290ZG93bnMgYXJlIGFsc28gYmFz
ZWQgb24gcGh5c2ljYWwgQ1BVcy4gSW4gYSBndWVzdCwgaG93ZXZlciwgdGhlIGVhcmxpZXIKPiA+
ID4gc2hvb3Rkb3duIG1heSBoYXZlIGJlZW4gb25seSBhIGd1ZXN0LWxvY2FsIHNmZW5jZS52bWEg
YW5kIG1heSBoYXZlIG1pc3NlZCBhbgo+ID4gPiBvbGQgaG9zdCBDUFUgd2hlcmUgdGhlIHNhbWUg
dkNQVSByYW4gcHJldmlvdXNseS4KPiA+ID4KPiA+ID4gQSBzaW1wbGlmaWVkIHNlcXVlbmNlIGlz
Ogo+ID4gPgo+ID4gPiAxLiBBIGd1ZXN0IHRhc2sgd2l0aCBtbSBBIHJ1bnMgb24gdmNwdTAgd2hp
bGUgdmNwdTAgaXMgc2NoZWR1bGVkIG9uIGhvc3QKPiA+ID4gICAgQ1BVMS4gQ1BVMSBmaWxscyBh
IFZTLXN0YWdlIFRMQiBlbnRyeSBmb3IgdGhhdCBtbS9BU0lELgo+ID4gPiAyLiB2Y3B1MCBtaWdy
YXRlcyB0byBob3N0IENQVTAuIEtWTSdzIHZDUFUgbWlncmF0aW9uIHNhbml0aXphdGlvbiBpcyBs
b2NhbAo+ID4gPiAgICB0byB0aGUgY3VycmVudCBob3N0IENQVSwgc28gaXQgZG9lcyBub3QgaW52
YWxpZGF0ZSB0aGUgVlMtc3RhZ2UgVExCIGVudHJ5Cj4gPiA+ICAgIHRoYXQgd2FzIGxlZnQgb24g
aG9zdCBDUFUxLgo+ID4gCj4gPiBXaGVuIHZjcHUwIG1pZ3JhdGVzIHRvIGhvc3QgQ1BVMCwgdGhl
IGhvc3QgQ1BVMCBtYXkgb3IgbWF5IG5vdCBoYXZlCj4gPiBWUy1zdGFnZSBUTEIgZW50cnkgc28g
VkNQVSBtaWdyYXRpb24gc2FuaXRpemF0aW9uIGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgo+ID4gCj4g
PiBJbiB0aGUgZnV0dXJlLCB2Y3B1MCBtYXkgYWdhaW4gbW92ZSBiYWNrIHRvIGhvc3QgQ1BVMSBj
b250YWluaW5nIHN0YWxlCj4gPiBWUy1zdGFnZSBUTEIgZW50cmllcyBsZWZ0IGluIHN0ZXAxIGFi
b3ZlIHNvIHRoZSBWQ1BVIG1pZ3JhdGlvbiBzYW5pdGl6YXRpb24KPiA+IHdpbGwgY2xlYW51cCB0
aGVzZSBzdGFsZSBUTEIgZW50ZXJpZXMuCj4gPiAKPiA+ID4gMy4gVGhlIGd1ZXN0IGxhdGVyIHVw
ZGF0ZXMgbW0gQSdzIHBhZ2UgdGFibGUgZnJvbSB2Y3B1MCwgZm9yIGV4YW1wbGUgZHVlIHRvCj4g
PiA+ICAgIENPVy4gU2luY2UgdGhlIGd1ZXN0IHN0aWxsIHNlZXMgbW0gQSBhcyBoYXZpbmcgcnVu
IG9ubHkgb24gZ3Vlc3QgQ1BVMCwKPiA+ID4gICAgX19mbHVzaF90bGJfcmFuZ2UoKSBjYW4gY2hv
b3NlIGEgbG9jYWwgc2ZlbmNlLnZtYS4gVGhhdCBsb2NhbCBzZmVuY2Uudm1hCj4gPiA+ICAgIG9u
bHkgYWZmZWN0cyBob3N0IENQVTAsIHdoZXJlIHZjcHUwIGlzIGN1cnJlbnRseSBydW5uaW5nLCBz
byB0aGUgc3RhbGUKPiA+ID4gICAgVlMtc3RhZ2UgZW50cnkgb24gaG9zdCBDUFUxIHJlbWFpbnMu
Cj4gPiAKPiA+IE5vIG5lZWQgdG8gd29ycnkgYWJvdXQgc3RhbGUgVlMtc3RhZ2UgZW50cnkgb24g
aG9zdCBDUFUxIGJlY2F1c2UgdGhlc2UKPiA+IHdpbGwgYWdlLW91dCBvciBzYW1lIGd1ZXN0IG1h
eSBhZ2FpbiBtb3ZlIHRvIGhvc3QgQ1BVMSByZXN1bHRpbmcgaW4KPiA+IFZDUFUgbWlncmF0aW9u
IHNhbml0aXphdGlvbi4KPiAKPiB2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3Ry
dWN0IGt2bV92Y3B1ICp2Y3B1KQo+IHsKPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdm1pZDsKPiAK
PiAgICAgICAgIGlmICgha3ZtX3Jpc2N2X2dzdGFnZV92bWlkX2JpdHMoKSB8fAo+ICAgICAgICAg
ICAgIHZjcHUtPmFyY2gubGFzdF9leGl0X2NwdSA9PSB2Y3B1LT5jcHUpCj4gICAgICAgICAgICAg
ICAgIHJldHVybjsKPiAKPiBZb3UncmUgcmlnaHQgdGhhdCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nh
bml0aXplKCkgY2FuIGNvcnJlY3RseSBkZXRlY3QgYQo+IENQVSBtaWdyYXRpb24gdmlhIHRoZSBh
Ym92ZSBjaGVjay4gVGhpcyBjaGVjayBydW5zIGJlZm9yZQo+IGt2bV9yaXNjdl92Y3B1X2VudGVy
X2V4aXQoKSwgc28gbGFzdF9leGl0X2NwdSBzdGlsbCBob2xkcyB0aGUgcHJldmlvdXMKPiBDUFUg
YW5kIHRoZSBtaWdyYXRpb24gY2FzZSBpcyBwcm9wZXJseSBoYW5kbGVkLgo+IAo+ICAgICAgICAg
dm1pZCA9IFJFQURfT05DRSh2Y3B1LT5rdm0tPmFyY2gudm1pZC52bWlkKTsKPiAgICAgICAgIGt2
bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTsKPiAKPiBUaGUgWGlhbmdT
aGFuIHRlYW0gc2VlbXMgdG8gcmVhZCB0aGUgc3BlY2lmaWNhdGlvbiBhcyBub3QgcmVxdWlyaW5n
Cj4gSEZFTkNFLkdWTUEgdG8gaW52YWxpZGF0ZSBWUy1zdGFnZSBUTEIgZW50cmllcy4gQ291bGQg
eW91IHBsZWFzZSBwb2ludAo+IG1lIHRvIHRoZSBleGFjdCB3b3JkaW5nIGluIHRoZSBSSVNDLVYg
UHJpdmlsZWdlZCBTcGVjaWZpY2F0aW9uIHRoYXQKPiBpbmRpY2F0ZXMgb3RoZXJ3aXNlPyBJIHdv
dWxkIHJlYWxseSBhcHByZWNpYXRlIHRoZSByZWZlcmVuY2UuCk9oLCBJIGZvdW5kIHRoaXMgaW4g
dGhlIHNwZWNpZmljYXRpb246CgpDb25jZXB0dWFsbHksIGFuIGltcGxlbWVudGF0aW9uIG1pZ2h0
IGNvbnRhaW4gdHdvIGFkZHJlc3MtdHJhbnNsYXRpb24KY2FjaGVzOiBvbmUgdGhhdCBtYXBzIGd1
ZXN0IHZpcnR1YWwgYWRkcmVzc2VzIHRvIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3NlcywKYW5kIGFu
b3RoZXIgdGhhdCBtYXBzIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3NlcyB0byBzdXBlcnZpc29yIHBo
eXNpY2FsCmFkZHJlc3Nlcy4gSEZFTkNFLkdWTUEgbmVlZCBub3QgZmx1c2ggdGhlIGZvcm1lciBj
YWNoZSwgYnV0IGl0IG11c3QgZmx1c2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXl5eXl5eIF5eXl5eCmVudHJpZXMgZnJvbSB0aGUgbGF0dGVyIGNhY2hlIHRoYXQg
bWF0Y2ggdGhlIEhGRU5DRS5HVk1B4oCZcyBhZGRyZXNzIGFuZAogICAgICAgICAgICAgICAgIF5e
Xl5eXiBeXl5eXgpWTUlEIGFyZ3VtZW50cy4KClRoaXMgbm9uLW5vcm1hdGl2ZSB0ZXh0IGRlc2Ny
aWJlcyB0d28gcG9zc2libGUgaGFyZHdhcmUgZGVzaWducywgd2hpY2gKY2F1c2UgSEZFTkNFLkdW
TUEgdG8gYmVoYXZlIGRpZmZlcmVudGx5OgogLSBJbiBhIHR3by1jYWNoZSBkZXNpZ24sIHN0YWxl
IFZTLXN0YWdlIGVudHJpZXMgY2FuIHJlbWFpbiBhZnRlcgpIRkVOQ0UuR1ZNQS4KIC0gSW4gYSBz
aW5nbGUtY2FjaGUgZGVzaWduIChHVkEg4oaSIFNQQSksIEhGRU5DRS5HVk1BIHdpbGwgYWxzbyBj
bGVhbiB1cCB0aGUKY29ycmVzcG9uZGluZyBzdGFsZSBWUy1zdGFnZSBlbnRyaWVzLgoKPiAKPiA+
IAo+ID4gPiA0LiBMYXRlciwgdGhlIHRhc2sgaXMgc2NoZWR1bGVkIGFnYWluIHdoaWxlIHZjcHUw
IGlzIHJ1bm5pbmcgb24gaG9zdCBDUFUxLgo+ID4gPiAgICBJZiB0aGUgQVNJRCBpcyBzdGlsbCB2
YWxpZCBhbmQgbm8gZGVmZXJyZWQgQVNJRCByb2xsb3ZlciBmbHVzaCBpcyBwZW5kaW5nLAo+ID4g
PiAgICBzZXRfbW1fYXNpZCgpIG1heSBub3QgaXNzdWUgYW55IGZsdXNoLiBUaGUgYWNjZXNzIG9u
IGhvc3QgQ1BVMSBjYW4gdGhlbgo+ID4gPiAgICBoaXQgdGhlIG9sZCBWUy1zdGFnZSBUTEIgZW50
cnkuCj4gPiAKPiA+IFNlZSBhYm92ZSBjb21tZW50cy4KPiA+IAo+ID4gPgo+ID4gPiBXZSBoaXQg
dGhpcyBvbiBhIFhpYW5nU2hhbiBSSVNDLVYgc3lzdGVtLiBBIGJhc2ggdGFzayBpbiB0aGUgZ3Vl
c3Qgd2FzCj4gPiA+IHNjaGVkdWxlZCBvbiB2Y3B1MCB3aGlsZSB0aGF0IHZDUFUgd2FzIHJ1bm5p
bmcgb24gaG9zdCBDUFUxLiBBIHJlYWQtb25seQo+ID4gPiBwYWdlIHdhcyBwcmVmZXRjaGVkIGFu
ZCBjYWNoZWQgaW4gQ1BVMSdzIFZTLXN0YWdlIFRMQi4gTGF0ZXIgdGhlIHNhbWUgdkNQVQo+ID4g
PiBtaWdyYXRlZCB0byBob3N0IENQVTAsIHRoZSBndWVzdCB0cmlnZ2VyZWQgQ09XIGFuZCB1cGRh
dGVkIHRoZSBtYXBwaW5nLCBhbmQKPiA+ID4gdGhlIGd1ZXN0IHN0aWxsIGlzc3VlZCBvbmx5IGEg
bG9jYWwgc2ZlbmNlLnZtYS4gVGhlIHN0YWxlIFZTLXN0YWdlIGVudHJ5IG9uCj4gPiA+IENQVTEg
d2FzIG5vdCBpbnZhbGlkYXRlZC4gQWZ0ZXIgcnVubmluZyBmb3Igc29tZSB0aW1lLCB0aGUgdGFz
ayBsYXRlcgo+ID4gPiBhY2Nlc3NlZCB0aGF0IG1hcHBpbmcgd2hpbGUgcnVubmluZyBvbiBob3N0
IENQVTEgYWdhaW4gYW5kIGhpdCB0aGUgc3RhbGUKPiA+ID4gdHJhbnNsYXRpb24uIFRoZSBkYXRh
IGluIHRoYXQgcGFnZSB3YXMgYSBwb2ludGVyIGZyb20gdGhlIEdPVCwgc28gaXQKPiA+ID4gZGVy
ZWZlcmVuY2VkIHRvIE5VTEwgYW5kIGV2ZW50dWFsbHkgY2F1c2VkIGEgc2VnbWVudGF0aW9uIGZh
dWx0Lgo+ID4gCj4gPiBUaGUgYWJvdmUgZXhhbXBsZSBpcyBhbHJlYWR5IHRha2VuIGNhcmUgYnkg
VExCIGZsdXNoZXMgaW4gS1ZNIFJJU0MtVi4KPiA+IFRoaXMgc21lbGxzIGxpa2Ugc29tZSBIVyBl
cnJhdGEgdG8gbWUuCj4gPiAKPiA+ID4KPiA+ID4gSSBjaGVja2VkIGN1cnJlbnQgdXBzdHJlYW0g
UklTQy1WIEtWTSAodjcuMC4yKSBhbmQgSSBkbyBub3Qgc2VlIEhTVEFUVVMuVlRWTQo+ID4gPiBi
ZWluZyBlbmFibGVkLCBzbyBndWVzdCBzZmVuY2Uudm1hIGlzIG5vdCB0cmFwcGVkLiBJIGZvdW5k
Cj4gPiA+IGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoKSBvbiBob3N0IENQVSBtaWdyYXRp
b24sIHdoaWNoIGhhbmRsZXMgRy1zdGFnZQo+ID4gPiBWTUlEIGVudHJpZXMgb24gdGhlIGN1cnJl
bnQgaG9zdCBDUFUsIGJ1dCBJIGRvIG5vdCB0aGluayBpdCBnZW5lcmFsbHkgc29sdmVzCj4gPiA+
IHRoZSBzdGFsZSBWUy1zdGFnZSBUTEIgY2FzZSBkZXNjcmliZWQgYWJvdmUuCj4gPiA+Cj4gPiA+
IEkgYWxzbyBub3RpY2VkIHRoZSB2ZW5kb3Itc3BlY2lmaWMga3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxi
X25vX2dwYSBwYXRoIGluCj4gPiA+IGN1cnJlbnQgdXBzdHJlYW0uIEl0IGxvb2tzIGxpa2UgYSB3
b3JrYXJvdW5kIGZvciBhIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24KPiA+ID4gaXNzdWUgb24g
QW5kZXMgQVg2Niwgd2hlcmUgdGhlIFZTLXN0YWdlIFRMQiBkb2VzIG5vdCBjYWNoZSBndWVzdCBw
aHlzaWNhbAo+ID4gPiBhZGRyZXNzIGFuZCBWTUlELCBzbyB0aGUgbm9ybWFsIFZNSUQvR1BBLWJh
c2VkIGludmFsaWRhdGlvbiBtb2RlbCBpcwo+ID4gPiBpbnN1ZmZpY2llbnQuIEluIHRoYXQgc2Vu
c2UsIGl0IGRvZXMgbm90IHNlZW0gdG8gYmUgYSBnZW5lcmljIHNvbHV0aW9uIGZvcgo+ID4gPiBn
dWVzdCBzZmVuY2Uudm1hIGNvaGVyZW5jZSBhY3Jvc3MgdkNQVSBtaWdyYXRpb24uCj4gPiA+Cj4g
PiA+IEkgYW0gd29uZGVyaW5nIHdoYXQgdGhlIHJpZ2h0IGRpcmVjdGlvbiBzaG91bGQgYmUuIEVu
YWJsaW5nIEhTVEFUVVMuVlRWTSBhbmQKPiA+ID4gdHJhcHBpbmcgZ3Vlc3Qgc2ZlbmNlLnZtYSB3
b3VsZCBhbGxvdyBLVk0gdG8gdHJhbnNsYXRlIGd1ZXN0IGxvY2FsIHNmZW5jZS52bWEKPiA+ID4g
aW50byB0aGUgcmVxdWlyZWQgaG9zdC1zaWRlIGhmZW5jZS52dm1hLCBidXQgdGhhdCBtYXkgYmUg
dG9vIGhlYXZ5IGZvciB0aGUKPiA+ID4gY29tbW9uIGNhc2UuIEFub3RoZXIgcG9zc2libGUgZGly
ZWN0aW9uIG1heSBiZSB0byBtYWtlIHRoZSBjdXJyZW50Cj4gPiA+IEFuZGVzLXNwZWNpZmljIHZD
UFUgbWlncmF0aW9uIGZsdXNoIGxvZ2ljIG1vcmUgZ2VuZXJpYywgc28gaW1wbGVtZW50YXRpb25z
Cj4gPiA+IHRoYXQgbmVlZCBWUy1zdGFnZSBUTEIgc2FuaXRpemF0aW9uIG9uIHZDUFUgbWlncmF0
aW9uIGNhbiBvcHQgaW4gdGhyb3VnaCBhCj4gPiA+IGNvbW1vbiBtZWNoYW5pc20uIEEgdGhpcmQg
cG9zc2liaWxpdHkgbWF5IGJlIHRvIGRlZmluZSBhIGxpZ2h0d2VpZ2h0IFNCSQo+ID4gPiBpbnRl
cmZhY2UgZm9yIGd1ZXN0IGxvY2FsIHNmZW5jZS52bWEsIHNvIExpbnV4IGNvdWxkIHVzZSBpdCBp
bgo+ID4gPiBfX2ZsdXNoX3RsYl9yYW5nZSgpIGZvciB0aGUgbG9jYWwgY2FzZSB3aGVuIHJ1bm5p
bmcgdW5kZXIgS1ZNLCBhbmQgS1ZNIGNvdWxkCj4gPiA+IHRoZW4gZGVjaWRlIHdoZXRoZXIgYSBs
b2NhbCBzZmVuY2Uudm1hIGlzIHN1ZmZpY2llbnQgb3Igd2hldGhlciBob3N0LXNpZGUKPiA+ID4g
aGZlbmNlLnZ2bWEgaXMgYWxzbyBuZWVkZWQuCj4gPiAKPiA+IEVuYWJsaW5nIEhTVEFUVVMuVlRW
TSBoYXMgYSBiaWcgaW1wYWN0IG9uIHBlcmZvcm1hbmNlIHNvIGNlcnRhaW5seQo+ID4gTkFDSyBm
cm9tIG15c2lkZS4KPiA+IAo+ID4gPgo+ID4gPiBNeSBxdWVzdGlvbnMgYXJlOgo+ID4gPiAxLiBJ
cyB0aGUgYmVoYXZpb3IgYWJvdmUgZXhwZWN0ZWQgb24gY3VycmVudCBSSVNDLVYgS1ZNPwo+ID4g
Cj4gPiBZZXMsIGl0IHNob3VsZCB3b3JrIGZpbmUgdW5sZXNzIHRoZXJlIGlzIHNvbWUgSFcgYnVn
Lgo+ID4gCj4gPiA+IDIuIElmIG5vdCwgd2hhdCB3b3VsZCBiZSB0aGUgcHJlZmVycmVkIGZpeCBk
aXJlY3Rpb24/Cj4gPiA+IDMuIFNob3VsZCB0aGlzIGJlIGhhbmRsZWQgYnkgdHJhcHBpbmcgZ3Vl
c3Qgc2ZlbmNlLnZtYSB3aXRoIFZUVk0sIGJ5Cj4gPiA+ICAgIGdlbmVyYWxpemluZyB0aGUgZXhp
c3RpbmcgdkNQVS1taWdyYXRpb24gVlMtc3RhZ2UgVExCIGZsdXNoIGxvZ2ljLCBvciBieQo+ID4g
PiAgICBhZGRpbmcgYSBsaWdodGVyIFNCSS1tZWRpYXRlZCBwYXRoIGZvciBndWVzdCBsb2NhbCBz
ZmVuY2Uudm1hPwo+ID4gPiA0LiBPciBpcyB0aGVyZSBhbm90aGVyIGludGVuZGVkIG1lY2hhbmlz
bSB0byBrZWVwIFZTLXN0YWdlIFRMQiBzdGF0ZSBjb2hlcmVudAo+ID4gPiAgICBhY3Jvc3MgdkNQ
VSBtaWdyYXRpb24/Cj4gPiA+Cj4gPiA+IElmIG5lZWRlZCwgSSBjYW4gc2VuZCBhIHJlcHJvZHVj
ZXIgYW5kIHRoZSBleGFjdCBoYXJkd2FyZS9rZXJuZWwgZGV0YWlscy4KPiA+ID4KPiA+IAo+ID4g
RXZlbiBpZiB5b3Ugc2hhcmUgc29tZSByZXBvcmR1Y2luZyBjb2RlIHNlcXVlbmNlLCB3ZSBzdGls
bCBoYXZlIGRvbid0Cj4gPiBoYXZlIGFjY2VzcyB0byB5b3VyIEhXIHNvIGl0IHdvbid0IGhlbHAg
bXVjaC4KPiA+IAo+ID4gUmVnYXJkcywKPiA+IEFudXAKPiA+IAo+ID4gX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IGxpbnV4LXJpc2N2IG1haWxpbmcg
bGlzdAo+ID4gbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwo+ID4gaHR0cDovL2xpc3Rz
LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo+IAo+IF9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gbGludXgtcmlzY3YgbWFp
bGluZyBsaXN0Cj4gbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwo+IGh0dHA6Ly9saXN0
cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcg
bGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl
YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK