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.kvm-riscv,org.infradead.lists.linux-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 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YKCi0tIAprdm0tcmlz Y3YgbWFpbGluZyBsaXN0Cmt2bS1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va3ZtLXJpc2N2Cg==