From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH v3 03/10] IOMMU/MMU: enhance the call trees of IOMMU unmapping and mapping Date: Thu, 5 May 2016 12:02:57 +0100 Message-ID: <572B2861.7020807@citrix.com> References: <1461921917-48394-1-git-send-email-quan.xu@intel.com> <1461921917-48394-4-git-send-email-quan.xu@intel.com> <945CA011AD5F084CBEA3E851C0AB28894B8A9316@SHSMSX101.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <945CA011AD5F084CBEA3E851C0AB28894B8A9316@SHSMSX101.ccr.corp.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "Xu, Quan" , George Dunlap , "Tian, Kevin" , Jan Beulich Cc: Andrew Cooper , Dario Faggioli , Keir Fraser , "Nakajima, Jun" , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org T24gMDUvMDUvMTYgMDc6NTMsIFh1LCBRdWFuIHdyb3RlOgo+IE9uIE1heSAwNCwgMjAxNiA5OjQ5 IFBNLCBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+IHdyb3RlOgo+ PiBPbiBGcmksIEFwciAyOSwgMjAxNiBhdCAxMDoyNSBBTSwgUXVhbiBYdSA8cXVhbi54dUBpbnRl bC5jb20+IHdyb3RlOgo+Pj4gV2hlbiBJT01NVSBtYXBwaW5nIGlzIGZhaWxlZCwgd2UgaXNzdWUg YSBiZXN0IGVmZm9ydCByb2xsYmFjaywKPj4+IHN0b3BwaW5nIElPTU1VIG1hcHBpbmcsIHVubWFw cGluZyB0aGUgcHJldmlvdXMgSU9NTVUgbWFwcyBhbmQKPj4gdGhlbgo+Pj4gcmVwb3J0aW5nIHRo ZSBlcnJvciB1cCB0byB0aGUgY2FsbCB0cmVlcy4gV2hlbiByb2xsYmFjayBpcyBub3QKPj4+IGZl YXNpYmxlIChpbiBlYXJseSBpbml0aWFsaXphdGlvbiBwaGFzZSBvciB0cmFkZS1vZmYgb2YgY29t cGxleGl0eSkKPj4+IGZvciB0aGUgaGFyZHdhcmUgZG9tYWluLCB3ZSBkbyB0aGluZ3Mgb24gYSBi ZXN0IGVmZm9ydCBiYXNpcywgb25seSB0aHJvd2luZwo+PiBvdXQgYW4gZXJyb3IgbWVzc2FnZS4K Pj4+Cj4+PiBJT01NVSB1bm1hcHBpbmcgc2hvdWxkIHBlcmhhcHMgY29udGludWUgZGVzcGl0ZSBh biBlcnJvciwgaW4gYW4KPj4+IGF0dGVtcHQgdG8gZG8gYmVzdCBlZmZvcnQgY2xlYW51cC4KPj4+ Cj4+PiBTaWduZWQtb2ZmLWJ5OiBRdWFuIFh1IDxxdWFuLnh1QGludGVsLmNvbT4KPj4+Cj4+PiBD QzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KPj4+IENDOiBKYW4gQmV1bGljaCA8amJldWxp Y2hAc3VzZS5jb20+Cj4+PiBDQzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KPj4+IENDOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+Cj4+PiBD QzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+Cj4+PiBDQzogR2VvcmdlIER1bmxh cCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgo+Pj4gLS0tCj4+PiAgeGVuL2FyY2gveDg2 L21tLmMgICAgICAgICAgICAgICB8IDEzICsrKysrKysrLS0tLS0KPj4+ICB4ZW4vYXJjaC94ODYv bW0vcDJtLWVwdC5jICAgICAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+PiAg eGVuL2FyY2gveDg2L21tL3AybS1wdC5jICAgICAgICB8IDI0ICsrKysrKysrKysrKysrKysrKysr LS0tLQo+Pj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgfCAxMSArKysrKysrKyst LQo+Pj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgfCAxNCArKysrKysrKysrKysr LQo+Pj4gIDUgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0p Cj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21t LmMgaW5kZXgKPj4+IGE0MjA5N2YuLjQyNzA5N2QgMTAwNjQ0Cj4+PiAtLS0gYS94ZW4vYXJjaC94 ODYvbW0uYwo+Pj4gKysrIGIveGVuL2FyY2gveDg2L21tLmMKPj4+IEBAIC0yNDY3LDcgKzI0Njcs NyBAQCBzdGF0aWMgaW50IF9fZ2V0X3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvCj4+ICpwYWdl LCB1bnNpZ25lZCBsb25nIHR5cGUsCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHByZWVtcHRpYmxlKSAgewo+Pj4gICAgICB1bnNpZ25lZCBsb25nIG54LCB4LCB5ID0gcGFnZS0+ dS5pbnVzZS50eXBlX2luZm87Cj4+PiAtICAgIGludCByYyA9IDA7Cj4+PiArICAgIGludCByYyA9 IDAsIHJldCA9IDA7Cj4+Pgo+Pj4gICAgICBBU1NFUlQoISh0eXBlICYgfihQR1RfdHlwZV9tYXNr IHwgUEdUX3BhZV94ZW5fbDIpKSk7Cj4+Pgo+Pj4gQEAgLTI1NzgsMTEgKzI1NzgsMTEgQEAgc3Rh dGljIGludCBfX2dldF9wYWdlX3R5cGUoc3RydWN0IHBhZ2VfaW5mbwo+PiAqcGFnZSwgdW5zaWdu ZWQgbG9uZyB0eXBlLAo+Pj4gICAgICAgICAgaWYgKCBkICYmIGlzX3B2X2RvbWFpbihkKSAmJiB1 bmxpa2VseShuZWVkX2lvbW11KGQpKSApCj4+PiAgICAgICAgICB7Cj4+PiAgICAgICAgICAgICAg aWYgKCAoeCAmIFBHVF90eXBlX21hc2spID09IFBHVF93cml0YWJsZV9wYWdlICkKPj4+IC0gICAg ICAgICAgICAgICAgaW9tbXVfdW5tYXBfcGFnZShkLCBtZm5fdG9fZ21mbihkLCBwYWdlX3RvX21m bihwYWdlKSkpOwo+Pj4gKyAgICAgICAgICAgICAgICByZXQgPSBpb21tdV91bm1hcF9wYWdlKGQs IG1mbl90b19nbWZuKGQsCj4+IHBhZ2VfdG9fbWZuKHBhZ2UpKSk7Cj4+PiAgICAgICAgICAgICAg ZWxzZSBpZiAoIHR5cGUgPT0gUEdUX3dyaXRhYmxlX3BhZ2UgKQo+Pj4gLSAgICAgICAgICAgICAg ICBpb21tdV9tYXBfcGFnZShkLCBtZm5fdG9fZ21mbihkLCBwYWdlX3RvX21mbihwYWdlKSksCj4+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfdG9fbWZuKHBhZ2UpLAo+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGV8SU9NTVVGX3dy aXRhYmxlKTsKPj4+ICsgICAgICAgICAgICAgICAgcmV0ID0gaW9tbXVfbWFwX3BhZ2UoZCwgbWZu X3RvX2dtZm4oZCwgcGFnZV90b19tZm4ocGFnZSkpLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYWdlX3RvX21mbihwYWdlKSwKPj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7Cj4+ PiAgICAgICAgICB9Cj4+PiAgICAgIH0KPj4+Cj4+PiBAQCAtMjU5OSw2ICsyNTk5LDkgQEAgc3Rh dGljIGludCBfX2dldF9wYWdlX3R5cGUoc3RydWN0IHBhZ2VfaW5mbwo+PiAqcGFnZSwgdW5zaWdu ZWQgbG9uZyB0eXBlLAo+Pj4gICAgICBpZiAoICh4ICYgUEdUX3BhcnRpYWwpICYmICEobnggJiBQ R1RfcGFydGlhbCkgKQo+Pj4gICAgICAgICAgcHV0X3BhZ2UocGFnZSk7Cj4+Pgo+Pj4gKyAgICBp ZiAoICFyYyApCj4+PiArICAgICAgICByYyA9IHJldDsKPj4+ICsKPj4+ICAgICAgcmV0dXJuIHJj Owo+Pj4gIH0KPj4+Cj4+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyBi L3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKPj4+IGluZGV4IDFlZDViNDcuLmRmODc5NDQgMTAw NjQ0Cj4+PiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCj4+PiArKysgYi94ZW4vYXJj aC94ODYvbW0vcDJtLWVwdC5jCj4+PiBAQCAtODIxLDYgKzgyMSw4IEBAIG91dDoKPj4+ICAgICAg aWYgKCBuZWVkc19zeW5jICkKPj4+ICAgICAgICAgIGVwdF9zeW5jX2RvbWFpbihwMm0pOwo+Pj4K Pj4+ICsgICAgcmV0ID0gMDsKPj4+ICsKPj4+ICAgICAgLyogRm9yIGhvc3QgcDJtLCBtYXkgbmVl ZCB0byBjaGFuZ2UgVlQtZCBwYWdlIHRhYmxlLiovCj4+PiAgICAgIGlmICggcmMgPT0gMCAmJiBw Mm1faXNfaG9zdHAybShwMm0pICYmIG5lZWRfaW9tbXUoZCkgJiYKPj4+ICAgICAgICAgICBuZWVk X21vZGlmeV92dGRfdGFibGUgKQo+Pj4gQEAgLTgzMSwxMSArODMzLDI5IEBAIG91dDoKPj4+ICAg ICAgICAgIHsKPj4+ICAgICAgICAgICAgICBpZiAoIGlvbW11X2ZsYWdzICkKPj4+ICAgICAgICAg ICAgICAgICAgZm9yICggaSA9IDA7IGkgPCAoMSA8PCBvcmRlcik7IGkrKyApCj4+PiAtICAgICAg ICAgICAgICAgICAgICBpb21tdV9tYXBfcGFnZShkLCBnZm4gKyBpLCBtZm5feChtZm4pICsgaSwg aW9tbXVfZmxhZ3MpOwo+Pj4gKyAgICAgICAgICAgICAgICB7Cj4+PiArICAgICAgICAgICAgICAg ICAgICByYyA9IGlvbW11X21hcF9wYWdlKGQsIGdmbiArIGksIG1mbl94KG1mbikgKyBpLCBpb21t dV9mbGFncyk7Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICBpZiAoICFyZXQgJiYgdW5s aWtlbHkocmMpICkKPj4+ICsgICAgICAgICAgICAgICAgICAgIHsKPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICB3aGlsZSAoIGktLSApCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlvbW11X3VubWFwX3BhZ2UoZCwgZ2ZuICsgaSk7Cj4+PiArCj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgcmV0ID0gcmM7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ PiArICAgICAgICAgICAgICAgICAgICB9Cj4+PiArICAgICAgICAgICAgICAgIH0KPj4+ICAgICAg ICAgICAgICBlbHNlCj4+PiAgICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDEgPDwg b3JkZXIpOyBpKysgKQo+Pj4gLSAgICAgICAgICAgICAgICAgICAgaW9tbXVfdW5tYXBfcGFnZShk LCBnZm4gKyBpKTsKPj4+ICsgICAgICAgICAgICAgICAgewo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgcmMgPSBpb21tdV91bm1hcF9wYWdlKGQsIGdmbiArIGkpOwo+Pj4gKwo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgaWYgKCAhcmV0ICYmIHVubGlrZWx5KHJjKSApCj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgcmV0ID0gcmM7Cj4+PiArICAgICAgICAgICAgICAgIH0KPj4+ICAgICAgICAg IH0KPj4+ICsKPj4+ICsgICAgICAgIHJjID0gMDsKPj4+ICAgICAgfQo+Pgo+PiBTbyB0aGUgcmVh c29uIGZvciBkb2luZyB0aGlzIHRoaW5nIHdpdGggc2V0dGluZyByZXQ9MCwgdGhlbiB1c2luZyBy YywKPj4gdGhlbiBzZXR0aW5nIHJjIHRvIHplcm8sIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBj aGFuZ2UgaXMgcHJvcGFnYXRlZAo+PiB0byB0aGUgYWx0cDJtIGlmIG5lY2Vzc2FyeT8KPj4KPj4g SSdtIG5vdCBhIGZhbiBvZiB0aGlzIHNvcnQgb2YgImltcGxpZWQgc2lnbmFsbGluZyIuICBUaGUg Y2hlY2sgYXQgdGhlCj4+IGFsdHAybSBjb25kaXRpb25hbCBpcyBtZWFudCB0byBzYXksICJldmVy eXRoaW5nIHdlbnQgZmluZSwgZ28gYWhlYWQKPj4gYW5kIHByb3BhZ2F0ZSB0aGUgY2hhbmdlIi4g IEJ1dCB3aXRoIHlvdXIgY2hhbmdlcywgdGhhdCdzIG5vdCB3aGF0IHdlCj4+IHdhbnQgYW55bW9y ZSAtLSB3ZSB3YW50LCAiSWYgdGhlIGNoYW5nZSBhY3R1YWxseSBtYWRlIGl0IGludG8gdGhlCj4+ IGhvc3RwMm0sIHByb3BhZ2F0ZSBpdCB0byB0aGUgYWx0cDJtLiIKPj4KPj4gQXMgc3VjaCwgSSB0 aGluayBpdCB3b3VsZCBiZSBhIGxvdCBjbGVhcmVyIHRvIGp1c3QgbWFrZSBhIG5ldyBib29sZWFu Cj4+IHZhcmlhYmxlLCBtYXliZSAiZW50cnlfd3JpdHRlbiIsIHdoaWNoIHdlIGluaXRpYWxpemUg dG8gZmFsc2UgYW5kIHRoZW4KPj4gc2V0IHRvIHRydWUgd2hlbiB0aGUgZW50cnkgaXMgYWN0dWFs bHkgd3JpdHRlbjsgYW5kIHRoZW4gY2hhbmdlIHRoZQo+PiBjb25kaXRpb24gcmUgdGhlIGFsdHAy bSB0byAiaWYgKCBlbnRyeV93cml0dGVuICYmIHAybV9pc19ob3N0cDJtKC4uKQo+PiApIi4KPj4K Pj4gVGhlbiBJIHRoaW5rIHlvdSBjb3VsZCBtYWtlIHRoZSByZXQgLyByYyB1c2UgbWlycm9yIHdo YXQgeW91IGRvCj4+IGVsc2V3aGVyZSwgd2hlcmUgcmV0IGlzIHVzZWQgdG8gc3RvcmUgdGhlIHJl dHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24KPj4gY2FsbCwgYW5kIGl0J3MgcHJvcGFnYXRlZCB0 byByYyBvbmx5IGlmIHJjIGlzIG5vdCBhbHJlYWR5IHNldC4KPj4KPiAKPiBHZW9yZ2UsCj4gCj4g VGhhbmtzIGZvciB5b3VyIGRldGFpbGVkIGV4cGxhbmF0aW9uLiBUaGlzIHNlZW1zIGFuIGFub3Ro ZXIgbWF0dGVyIG9mIHByZWZlcmVuY2UuCj4gT2YgY291cnNlLCBJJ2QgZm9sbG93IHlvdXIgc3Vn Z2VzdGlvbiBpbiBwMm0gIGZpZWxkLCB3aGlsZSBJIG5lZWQgdG8gaGVhciB0aGUgb3RoZXIgbWFp bnRhaW5lcnMnIG9wdGlvbnMgYXMgd2VsbAo+IChlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgZnJv bSBLZXZpbi9KYW4sIGFzIHRoZXkgZG8gc3BlbmQgYSBsb3Qgb2YgdGltZSBmb3IgbWUpLgo+IAo+ IEEgbGl0dGxlIGJpdCBvZiBkaWZmZXJlbmNlIGhlcmUsIElNTywgYW4gaW50ICdlbnRyeV93cml0 dGVuJyBpcyBtdWNoIGJldHRlciwgYXMgd2UgYWxzbyBuZWVkICB0byBwcm9wYWdhdGUgdGhlICdl bnRyeV93cml0dGVuJyB1cCB0byBjYWxsZXJzLAo+IGkuZS4gdGhlIGVycm9ycyByZXR1cm5lZCBm cm9tIGF0b21pY193cml0ZV9lcHRfZW50cnkoKSBhcmUgJy1FSU5WQUwnLCAnLUVTUkNIJyBhbmQg Jy1FQlVTWScuIFRoZW4sIHRoZSBmb2xsb3cgaXMgbXkgbW9kaWZpY2F0aW9uIChmZWVsIGZyZWUg dG8gY29ycmVjdCBtZSk6CgpCdXQgaXQgZG9lc24ndCBsb29rIGxpa2UgeW91J3JlIGFjdHVhbGx5 IHRha2luZyBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QKdGhhdCBlbnRyeV93cml0dGVuIGlzIG5vbi1i b29sZWFuIC0tIG90aGVyIHRoYW4gaW1tZWRpYXRlbHkgY29weWluZyB0aGUKdmFsdWUgaW50byBy YywgYWxsIHRoZSBwbGFjZXMgeW91J3JlIG9ubHkgY2hlY2tpbmcgaWYgaXQncyB6ZXJvIG9yIG5v dAood2hlcmUgInplcm8iIGluIHRoaXMgY2FzZSBhY3R1YWxseSBtZWFucyAidGhlIGVudHJ5IHdh cyB3cml0dGVuIikuCgpUaGUgY29kZSB5b3UgaGFkIGJlZm9yZSB3YXMsIGFzIGZhciBhcyBJIGNh biB0ZWxsLCBmdW5jdGlvbmFsbHkgY29ycmVjdC4KIFRoZSBwb2ludCBvZiBpbnRyb2R1Y2luZyB0 aGUgZXh0cmEgdmFyaWFibGUgaXMgdG8gZGVjcmVhc2UgY29nbml0aXZlCmxvYWQgb24gcGVvcGxl IGNvbWluZyBhbG9uZyB0byBtb2RpZnkgdGhlIGNvZGUgbGF0ZXIuICBUbyBkbyB0aGF0LCB5b3UK d2FudCB0byBtYXhpbWl6ZSB0aGUgdGhpbmdzIHlvdSBkbyB0aGF0IGFyZSB3aXRoaW4gZXhwZWN0 YXRpb24sIGFuZAptaW5pbWl6ZSB0aGUgdGhpbmdzIHlvdSBkbyBvdXRzaWRlIG9mIHRoYXQuCgpU aGUgbmFtZSAiZW50cnlfd3JpdHRlbiIgc291bmRzIGxpa2UgYSBib29sZWFuOyBkZXZlbG9wZXJz IHdpbGwgZXhwZWN0CiIwIC8gZmFsc2UiIHRvIG1lYW4gIm5vdCB3cml0dGVuIiBhbmQgIjEvdHJ1 ZSIgdG8gbWVhbiAiZW50cnkgd3JpdHRlbiIuCiBGdXJ0aGVybW9yZSwgcmMgbG9va3MgbGlrZSBh IHJldHVybiB2YWx1ZTsgaWYgY29kZXJzIHNlZSAicmMgPQphdG9taWNfd3JpdGVfZXB0X2VudHJ5 KCkiIHRoZXkgaW1tZWRpYXRlbHkgaGF2ZSBhIGZyYW1ld29yayBmb3Igd2hhdCdzCmdvaW5nIG9u OyB3aGVyZWFzIGlmIHRoZXkgc2VlICJlbnRyeV93cml0dGVuID09IFsuLi5dOyBpZgooZW50cnlf d3JpdHRlbikgeyAuLi4gcmM9IGVudHJ5X3dyaXR0ZW47IH0iLCBpdCB0YWtlcyBzb21lIHRoaW5r aW5nIHRvCmZpZ3VyZSBvdXQuICBOb3QgbXVjaCwgYnV0IGV2ZXJ5IGxpdHRsZSBiaXQgb2YgdW5u ZWNlc3NhcnkgdGhpbmtpbmcgYWRkcyB1cC4KCk15IHN1Z2dlc3Rpb24gcmVtYWlucyB0bzoKMS4g RGVjbGFyZSBlbnRyeV93cml0dGVuIGFzIGEgYm9vbCwgaW5pdGlhbGl6ZWQgdG8gZmFsc2UKMi4g SW4gYm90aCBhdG9taWNfd3JpdGVfZXB0X2VudHJ5KCkgY2FsbHMsIHVzZSByYyB0byBjb2xsZWN0 IHRoZSByZXR1cm4KdmFsdWUKMy4gSW4gdGhlIHNlY29uZCBvbmUgKHRoZSBvbmUgd2hpY2ggbWF5 IGZhaWwpLCBhZGQgYW4gZWxzZSB7CmVudHJ5X3dyaXR0ZW4gPSB0cnVlOyB9CjQuIEluIHRoZSBj b25kaXRpb25hbCBkZWNpZGluZyB3aGV0aGVyIHRvIHVwZGF0ZSB0aGUgaW9tbXUsIHVzZQoiZW50 cnlfd3JpdHRlbiIsIEkgdGhpbmsuICBBdCB0aGlzIHBvaW50IHJjID09IDAgYW5kIGVudHJ5X3dy aXR0ZW4gPQp0cnVlIHdpbGwgYmUgaWRlbnRpY2FsLCBidXQgaWYgd2UgZXZlciBpbnNlcnQgc29t ZXRoaW5nIGluIGJldHdlZW4sIHdlCndhbnQgdGhlIGlvbW11IHVwZGF0ZSB0byBiZSBhdHRlbXB0 ZWQgYW55IHRpbWUgdGhlIGVudHJ5IGlzIHN1Y2Nlc3NmdWxseQp3cml0dGVuLgo1LiBVc2UgImlm ICggZW50cnlfd3JpdHRlbiAmJiAuLi4pIiB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgdG8gcHJvcGFn YXRlCnRoZSBjaGFuZ2UgdG8gdGhlIGFsdHAybS4KClRoYW5rcywKIC1HZW9yZ2UKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=