From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: Discussion about virtual iommu support for Xen guest Date: Fri, 3 Jun 2016 14:51:52 +0100 Message-ID: <57518B78.6060604@citrix.com> References: <5746B3FA.6020401@intel.com> <5746DF93.8090803@citrix.com> <57480327.60609@intel.com> <78d122f0-c773-7fa3-1258-c551937c508e@intel.com> <575081E8.6070609@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "Tian, Kevin" , "Lan, Tianyu" , "jbeulich@suse.com" , "sstabellini@kernel.org" , "ian.jackson@eu.citrix.com" , "xen-devel@lists.xensource.com" , "Dong, Eddie" , "Nakajima, Jun" , "yang.zhang.wz@gmail.com" , "anthony.perard@citrix.com" , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org T24gMDMvMDYvMTYgMTI6MTcsIFRpYW4sIEtldmluIHdyb3RlOgo+PiBWZXJ5IHNvcnJ5IGZvciB0 aGUgZGVsYXkuCj4+Cj4+IFRoZXJlIGFyZSBtdWx0aXBsZSBpbnRlcmFjdGluZyBpc3N1ZXMgaGVy ZS4gIE9uIHRoZSBvbmUgc2lkZSwgaXQgd291bGQKPj4gYmUgdXNlZnVsIGlmIHdlIGNvdWxkIGhh dmUgYSBjZW50cmFsIHBvaW50IG9mIGNvb3JkaW5hdGlvbiBvbgo+PiBQVkgvSFZNTGl0ZSB3b3Jr LiAgUm9nZXIgLSBhcyB0aGUgcGVyc29uIHdobyBsYXN0IGRpZCBIVk1MaXRlIHdvcmssCj4+IHdv dWxkIHlvdSBtaW5kIG9yZ2FuaXNpbmcgdGhhdD8KPj4KPj4gRm9yIHRoZSBxZW11L3hlbiBpbnRl cmFjdGlvbiwgdGhlIGN1cnJlbnQgc3RhdGUgaXMgd29lZnVsIGFuZCBhIHRhbmdsZWQKPj4gbWVz cy4gIEkgd2lzaCB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBtYWtlIGFueSBkZXZlbG9wbWVudCBk ZWNpc2lvbnMKPj4gd2hpY2ggbWFrZXMgdGhlIHNpdHVhdGlvbiB3b3JzZS4KPj4KPj4gSW4geW91 ciBjYXNlLCB0aGUgdHdvIG1vdGl2YXRpb25zIGFyZSBxdWl0ZSBkaWZmZXJlbnQgSSB3b3VsZCBy ZWNvbW1lbmQKPj4gZGVhbGluZyB3aXRoIHRoZW0gaW5kZXBlbmRlbnRseS4KPj4KPj4gSUlSQywg dGhlIGlzc3VlIHdpdGggbW9yZSB0aGFuIDI1NSBjcHVzIGFuZCBpbnRlcnJ1cHQgcmVtYXBwaW5n IGlzIHRoYXQKPj4geW91IGNhbiBvbmx5IHVzZSB4MmFwaWMgbW9kZSB3aXRoIG1vcmUgdGhhbiAy NTUgY3B1cywgYW5kIElPQVBJQyBSVEVzCj4+IGNhbid0IGJlIHByb2dyYW1tZWQgdG8gZ2VuZXJh dGUgeDJhcGljIGludGVycnVwdHM/ICBJbiBwcmluY2lwbGUsIGlmIHlvdQo+PiBkb24ndCBoYXZl IGFuIElPQVBJQywgYXJlIHRoZXJlIGFueSBvdGhlciBpc3N1ZXMgdG8gYmUgY29uc2lkZXJlZD8g IFdoYXQKPj4gaGFwcGVucyBpZiB5b3UgY29uZmlndXJlIHRoZSBMQVBJQ3MgaW4geDJhcGljIG1v ZGUsIGJ1dCBoYXZlIHRoZSBJT0FQSUMKPj4gZGVsaXZlciB4YXBpYyBpbnRlcnJ1cHRzPwo+IFRo ZSBrZXkgaXMgdGhlIEFQSUMgSUQuIFRoZXJlIGlzIG5vIG1vZGlmaWNhdGlvbiB0byBleGlzdGlu ZyBQQ0kgTVNJIGFuZAo+IElPQVBJQyB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgeDJhcGljLiBQ Q0kgTVNJL0lPQVBJQyBjYW4gb25seSBzZW5kCj4gaW50ZXJydXB0IG1lc3NhZ2UgY29udGFpbmlu ZyA4Yml0IEFQSUMgSUQsIHdoaWNoIGNhbm5vdCBhZGRyZXNzID4yNTUKPiBjcHVzLiBJbnRlcnJ1 cHQgcmVtYXBwaW5nIHN1cHBvcnRzIDMyYml0IEFQSUMgSUQgc28gaXQncyBuZWNlc3NhcnkgdG8K PiBlbmFibGUgPjI1NSBjcHVzIHdpdGggeDJhcGljIG1vZGUuCgpUaGFua3MgZm9yIGNsYXJpZnlp bmcuCgo+Cj4gSWYgTEFQSUMgaXMgaW4geDJhcGljIHdoaWxlIGludGVycnVwdCByZW1hcHBpbmcg aXMgZGlzYWJsZWQsIElPQVBJQyBjYW5ub3QKPiBkZWxpdmVyIGludGVycnVwdHMgdG8gYWxsIGNw dXMgaW4gdGhlIHN5c3RlbSBpZiAjY3B1ID4gMjU1LgoKT2suICBTbyBub3QgaWRlYWwgKGFuZCB3 ZSBjZXJ0YWlubHkgd2FudCB0byBhZGRyZXNzIGl0KSwgYnV0IHRoaXMgaXNuJ3QKYSBjb21wbGV0 ZSBzaG93IHN0b3BwZXIgZm9yIGEgZ3Vlc3QuCgo+PiBPbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGlu Z3MsIHdoYXQgaXMgSUdEIHBhc3N0aHJvdWdoIGdvaW5nIHRvIGxvb2sgbGlrZQo+PiBpbiBTa3ls YWtlPyAgSXMgdGhlcmUgYW55IGRldmljZS1tb2RlbCBpbnRlcmFjdGlvbiByZXF1aXJlZCAoaS5l LiB0aGUKPj4gb3ByZWdpb24pLCBvciB3aWxsIGl0IHdvcmsgYXMgYSBjb21wbGV0ZWx5IHN0YW5k YWxvbmUgZGV2aWNlPyAgV2hhdCBhcmUKPj4geW91ciBwbGFucyB3aXRoIHRoZSBpbnRlcmFjdGlv biBvZiB2aXJ0dWFsIGdyYXBoaWNzIGFuZCBzaGFyZWQgdmlydHVhbAo+PiBtZW1vcnk/Cj4+Cj4g VGhlIHBsYW4gaXMgdG8gdXNlIGEgc28tY2FsbGVkIHVuaXZlcnNhbCBwYXNzLXRocm91Z2ggZHJp dmVyIGluIHRoZSBndWVzdAo+IHdoaWNoIG9ubHkgYWNjZXNzZXMgc3RhbmRhcmQgUENJIHJlc291 cmNlICh3L28gb3ByZWdpb24sIFBDSC9NQ0gsIGV0Yy4pCgpUaGlzIGlzIGZhbnRhc3RpYyBuZXdz LgoKPgo+IC0tLS0KPiBIZXJlIGlzIGEgYnJpZWYgb2YgcG90ZW50aWFsIHVzYWdlcyByZWx5aW5n IG9uIHZJT01NVToKPgo+IGEpIGVuYWJsZSA+MjU1IHZjcHVzIG9uIFhlb24gUGhpLCBhcyB0aGUg aW5pdGlhbCBwdXJwb3NlIG9mIHRoaXMgdGhyZWFkLiAKPiBJdCByZXF1aXJlcyBpbnRlcnJ1cHQg cmVtYXBwaW5nIGNhcGFiaWxpdHkgcHJlc2VudCBvbiB2SU9NTVU7Cj4KPiBiKSBzdXBwb3J0IGd1 ZXN0IFNWTSAoU2hhcmVkIFZpcnR1YWwgTWVtb3J5KSwgd2hpY2ggcmVsaWVzIG9uIHRoZQo+IDFz dCBsZXZlbCB0cmFuc2xhdGlvbiB0YWJsZSBjYXBhYmlsaXR5IChHVkEtPkdQQSkgb24gdklPTU1V LiBwSU9NTVUKPiBuZWVkcyB0byBlbmFibGUgYm90aCAxc3QgbGV2ZWwgYW5kIDJuZCBsZXZlbCB0 cmFuc2xhdGlvbiBpbiBuZXN0ZWQKPiBtb2RlIChHVkEtPkdQQS0+SFBBKSBmb3IgcGFzc3Rocm91 Z2ggZGV2aWNlLiBJR0QgcGFzc3Rocm91Z2ggaXMKPiB0aGUgbWFpbiB1c2FnZSB0b2RheSAodG8g c3VwcG9ydCBPcGVuQ0wgMi4wIFNWTSBmZWF0dXJlKS4gSW4gdGhlCj4gZnV0dXJlIFNWTSBtaWdo dCBiZSB1c2VkIGJ5IG90aGVyIEkvTyBkZXZpY2VzIHRvbzsKPgo+IGMpIHN1cHBvcnQgVkZJTy1i YXNlZCB1c2VyIHNwYWNlIGRyaXZlciAoZS5nLiBEUERLKSBpbiB0aGUgZ3Vlc3QsCj4gd2hpY2gg cmVsaWVzIG9uIHRoZSAybmQgbGV2ZWwgdHJhbnNsYXRpb24gY2FwYWJpbGl0eSAoSU9WQS0+R1BB KSBvbiAKPiB2SU9NTVUuIHBJT01NVSAybmQgbGV2ZWwgYmVjb21lcyBhIHNoYWRvd2luZyBzdHJ1 Y3R1cmUgb2YKPiB2SU9NTVUgMm5kIGxldmVsIGJ5IHJlcGxhY2luZyBHUEEgd2l0aCBIUEEgKGJl Y29tZXMgSU9WQS0+SFBBKTsKCkFsbCBvZiB0aGVzZSBsb29rIGxpa2UgaW50ZXJlc3RpbmcgdGhp bmdzIHRvIGRvLiAgSSBrbm93IHRoZXJlIGlzIGEgbG90Cm9mIGludGVyZXN0IGZvciBiKS4KCkFz IGEgcXVpY2sgYXNpZGUsIGRvZXMgWGVuIGN1cnJlbnRseSBib290IG9uIGEgUGhpPyAgTGFzdCB0 aW1lIEkgbG9va2VkCmF0IHRoZSBQaGkgbWFudWFsLCBJIHdvdWxkIGV4cGVjdCBYZW4gdG8gY3Jh c2ggb24gYm9vdCBiZWNhdXNlIG9mIE1DWFNSCmRpZmZlcmVuY2VzIGZyb20gbW9yZS1jb21tb24g eDg2IGhhcmR3YXJlLgoKPgo+IC0tLS0KPiBBbmQgYmVsb3cgaXMgbXkgdGhvdWdodCB2aWFiaWxp dHkgb2YgaW1wbGVtZW50aW5nIHZJT01NVSBpbiBRZW11Ogo+Cj4gYSkgZW5hYmxlID4yNTUgdmNw dXM6Cj4KPiAJbyBFbmFibGUgUTM1IGluIFFlbXUtWGVuOwo+IAlvIEFkZCBpbnRlcnJ1cHQgcmVt YXBwaW5nIGluIFFlbXUgdklPTU1VOwo+IAlvIFZpcnR1YWwgaW50ZXJydXB0IGluamVjdGlvbiBp biBoeXBlcnZpc29yIG5lZWRzIHRvIGtub3cgdmlydHVhbAo+IGludGVycnVwdCByZW1hcHBpbmcg KElSKSBzdHJ1Y3R1cmUsIHNpbmNlIElSIGlzIGJlaGluZCB2SU9BUElDL3ZNU0ksCj4gd2hpY2gg cmVxdWlyZXMgbmV3IGh5cGVydmlzb3IgaW50ZXJmYWNlcyBhcyBBbmRyZXcgcG9pbnRlZCBvdXQ6 Cj4gCQkqIGVpdGhlciBmb3IgaHlwZXJ2aXNvciB0byBxdWVyeSBJUiBmcm9tIFFlbXUgd2hpY2gg aXMgbm90Cj4gZ29vZDsKPiAJCSogb3IgZm9yIFFlbXUgdG8gcmVnaXN0ZXIgSVIgaW5mbyB0byBo eXBlcnZpc29yIHdoaWNoIG1lYW5zCj4gcGFydGlhbCBJUiBrbm93bGVkZ2UgaW1wbGVtZW50ZWQg aW4gaHlwZXJ2aXNvciAodGhlbiB3aHkgbm90IHB1dHRpbmcKPiB3aG9sZSBJUiBlbXVsYXRpb24g aW4gWGVuPykKPgo+IGIpIHN1cHBvcnQgU1ZNCj4KPiAJbyBFbmFibGUgUTM1IGluIFFlbXUtWGVu Owo+IAlvIEFkZCAxc3QgbGV2ZWwgdHJhbnNsYXRpb24gY2FwYWJpbGl0eSBpbiBRZW11IHZJT01N VTsKPiAJbyBWVC1kIGNvbnRleHQgZW50cnkgcG9pbnRzIHRvIGd1ZXN0IDFzdCBsZXZlbCB0cmFu c2xhdGlvbiB0YWJsZQo+IHdoaWNoIGlzIG5lc3QtdHJhbnNsYXRlZCBieSAybmQgbGV2ZWwgdHJh bnNsYXRpb24gdGFibGUgc28gdklPTU1VCj4gc3RydWN0dXJlIGNhbiBiZSBkaXJlY3RseSBsaW5r ZWQuIEl0IG1lYW5zOgo+IAkJKiBYZW4gSU9NTVUgZHJpdmVyIGVuYWJsZXMgbmVzdGVkIG1vZGU7 Cj4gCQkqIEludHJvZHVjZSBhIG5ldyBoeXBlcmNhbGwgc28gUWVtdSB2SU9NTVUgY2FuIHJlZ2lz dGVyCj4gR1BBIHJvb3Qgb2YgZ3Vlc3QgMXN0IGxldmVsIHRyYW5zbGF0aW9uIHRhYmxlIHdoaWNo IGlzIHRoZW4gd3JpdHRlbgo+IHRvIGNvbnRleHQgZW50cnkgaW4gcElPTU1VOwo+Cj4gYykgc3Vw cG9ydCBWRklPLWJhc2VkIHVzZXIgc3BhY2UgZHJpdmVyCj4KPiAJbyBFbmFibGUgUTM1IGluIFFl bXUtWGVuOwo+IAlvIExldmVyYWdlIGV4aXN0aW5nIDJuZCBsZXZlbCB0cmFuc2xhdGlvbiBpbXBs ZW1lbnRhdGlvbiBpbiBRZW11IAo+IHZJT01NVTsKPiAJbyBDaGFuZ2UgWGVuIElPTU1VIHRvIHN1 cHBvcnQgKElPVkEtPkhQQSkgdHJhbnNsYXRpb24gd2hpY2gKPiBtZWFucyBkZWNvdXBsZSBjdXJy ZW50IGxvZ2ljIGZyb20gUDJNIGxheWVyIChvbmx5IGZvciBHUEEtPkhQQSk7Cj4gCW8gQXMgYSBt ZWFucyBvZiBzaGFkb3dpbmcgYXBwcm9hY2gsIFhlbiBJT01NVSBkcml2ZXIgbmVlZHMgdG8KPiBr bm93IGJvdGggKElPVkEtPkdQQSkgYW5kIChHUEEtPkhQQSkgaW5mbyB0byB1cGRhdGUgKElPVkEt PkhQQSkKPiBtYXBwaW5nIGluIGNhc2Ugb2YgYW55IG9uZSBpcyBjaGFuZ2VkLiBTbyBuZXcgaW50 ZXJmYWNlIGlzIHJlcXVpcmVkCj4gZm9yIFFlbXUgdklPTU1VIHRvIHByb3BhZ2F0ZSAoSU9WQS0+ R1BBKSBpbmZvIGludG8gWGVuIGh5cGVydmlzb3IKPiB3aGljaCBtYXkgbmVlZCB0byBiZSBmdXJ0 aGVyIGNhY2hlZC4gCj4KPiAtLS0tCj4KPiBBZnRlciB3cml0aW5nIGRvd24gYWJvdmUgZGV0YWls LCBsb29rcyBpdCdzIGNsZWFyIHRoYXQgcHV0dGluZyB2SU9NTVUKPiBpbiBRZW11IGlzIG5vdCBh IGNsZWFuIGRlc2lnbiBmb3IgYSkgYW5kIGMpLiBGb3IgYikgdGhlIGh5cGVydmlzb3IKPiBjaGFu Z2UgaXMgbm90IHRoYXQgaGFja3ksIGJ1dCBmb3IgaXQgYWxvbmUgc2VlbXMgbm90IHN0cm9uZyB0 byBwdXJzdWUKPiBRZW11IHBhdGguIFNlZW1zIHdlIG1heSBoYXZlIHRvIGdvIHdpdGggaHlwZXJ2 aXNvciBiYXNlZCAKPiBhcHByb2FjaC4uLgo+Cj4gQW55d2F5IHN0b3AgaGVyZS4gV2l0aCBhYm92 ZSBiYWNrZ3JvdW5kIGxldCdzIHNlZSB3aGV0aGVyIG90aGVycwo+IG1heSBoYXZlIGEgYmV0dGVy IHRob3VnaHQgaG93IHRvIGFjY2VsZXJhdGUgVFRNIG9mIHRob3NlIHVzYWdlcwo+IGluIFhlbi4g WGVuIG9uY2UgaXMgYSBsZWFkaW5nIGh5cGVydmlzb3IgZm9yIG1hbnkgbmV3IGZlYXR1cmVzLCBi dXQKPiByZWNlbnRseSBpdCBpcyBub3Qgc3VzdGFpbmluZy4gSWYgYWJvdmUgdXNhZ2VzIGNhbiBi ZSBlbmFibGVkIGRlY291cGxlZAo+IGZyb20gSFZNbGl0ZS92aXJ0dWFsX3Jvb3RfcG9ydCBlZmZv cnQsIHRoZW4gd2UgY2FuIGhhdmUgc3RhZ2VkIHBsYW4KPiB0byBtb3ZlIGZhc3RlciAoZmlyc3Qg Zm9yIEhWTSwgbGF0ZXIgZm9yIEhWTUxpdGUpLiA6LSkKCkkgZGlzbGlrZSB0aGF0IHdlIGFyZSBp biB0aGlzIHNpdHVhdGlvbiwgYnV0IEkgZ2xhZCB0byBzZWUgdGhhdCBJIGFtIG5vdAp0aGUgb25s eSBvbmUgd2hvIHRoaW5rcyB0aGF0IHRoZSBjdXJyZW50IHNpdHVhdGlvbiBpcyB1bnN1c3RhaW5h YmxlLgoKVGhlIHByb2JsZW0gaXMgdGhpbmdzIHdlcmUgaGFja2VkIHVwIGluIHRoZSBwYXN0IHRv IGFzc3VtZSBxZW11IGNvdWxkCmRlYWwgd2l0aCBldmVyeXRoaW5nIGxpa2UgdGhpcy4gIExhdGVy LCBwZXJmb3JtYW5jZSBzdWNrZWQgc3VmZmljaWVudGx5CnRoYXQgYml0IG9mIHFlbXUgd2VyZSBt b3ZlZCBiYWNrIHVwIGludG8gdGhlIGh5cGVydmlzb3IsIHdoaWNoIGlzIHdoeQp0aGUgdklPQVBJ QyBpcyBjdXJyZW50bHkgbG9jYXRlZCB0aGVyZS4gIFRoZSByZXN1bHQgaXMgYSBjb21wbGV0ZQp0 YW5nbGVkIHJhdHNuZXN0LgoKClhlbiBoYXMgMyBjb21tb24gdXNlcyBmb3IgcWVtdSwgd2hpY2gg YXJlOgoxKSBFbXVsYXRpb24gb2YgbGVnYWN5IGRldmljZXMKMikgUENJIFBhc3N0aHJvdWdoCjMp IFBWIGJhY2tlbmRzCgozIGlzbid0IHJlYWxseSByZWxldmFudCBoZXJlLiAgRm9yIDEsIHdlIGFy ZSBiYXNpY2FsbHkganVzdCB1c2luZyBRZW11CnRvIHByb3ZpZGUgYW4gTFBDIGltcGxlbWVudGF0 aW9uICh3aXRoIHNvbWUgcG9wdWxhdGVkIHNsb3RzIGZvcgpkaXNrL25ldHdvcmsgZGV2aWNlcyku CgpJIHRoaW5rIGl0IHdvdWxkIGJlIGZhciBjbGVhbmVyIHRvIHJlLWVuZ2luZWVyIHRoZSBjdXJy ZW50IFhlbi9xZW11CmludGVyYWN0aW9uIHRvIG1vcmUgY2xvc2VseSByZXNlbWJsZSByZWFsIGhh cmR3YXJlLCBpbmNsdWRpbmcKY29uc2lkZXJpbmcgaGF2aW5nIG11bHRpcGxlIHZJT0FQSUNzL3ZJ T01NVXMvZXRjIHdoZW4gYXJjaGl0ZWN0dXJhbGx5CmFwcHJvcHJpYXRlLiAgSSBleHBlY3QgdGhh dCBpdCB3b3VsZCBiZSBhIGZhciBjbGVhbmVyIGludGVyZmFjZSB0byB1c2UKYW5kIGV4dGVuZC4g IEkgYWxzbyByZWFsaXNlIHRoYXQgdGhpcyBpc24ndCBhIHNpbXBsZSB0YXNrIEkgYW0Kc3VnZ2Vz dGluZywgYnV0IEkgZG9uJ3Qgc2VlIGFueSBvdGhlciB2aWFibGUgd2F5IG91dC4KCk90aGVyIGlz c3VlcyBpbiB0aGUgbWl4IGlzIHN1cHBvcnQgZm9yIG11bHRpcGxlIGRldmljZSBlbXVsYXRvcnMs IGluCndoaWNoIGNhc2UgWGVuIGlzIGFscmVhZHkgcGVyZm9ybWluZyBmaXJzdC1sZXZlbCByZWRp cmVjdGlvbiBvZiBNTUlPCnJlcXVlc3RzLgoKRm9yIEhWTUxpdGUsIHRoZXJlIGlzIHNwZWNpZmlj YWxseSBubyBxZW11LCBhbmQgd2UgbmVlZCBzb21ldGhpbmcgd2hpY2gKY2FuIGZ1bmN0aW9uIHdo ZW4gd2Ugd2FudCBQQ0kgUGFzc3Rocm91Z2ggdG8gd29yay4gIEkgYW0gcXVpdGUgY29uZmlkZW50 CnRoYXQgdGhlIGNvcnJlY3Qgc29sdXRpb24gaGVyZSBpcyB0byBoYXZlIGEgYmFzaWMgaG9zdCBi cmlkZ2Uvcm9vdCBwb3J0CmltcGxlbWVudGF0aW9uIGluIFhlbiAoYXMgd2UgYWxyZWFkeSBoYXZl IDgwJSBvZiB0aGlzIGFscmVhZHkpLCBhdCB3aGljaApwb2ludCB3ZSBkb24ndCBuZWVkIGFueSBx ZW11IGludGVyYWN0aW9uIGZvciBQQ0kgUGFzc3Rob3VnaCBhdCBhbGwsIGV2ZW4KZm9yIEhWTSBn dWVzdHMuCgpGcm9tIHRoaXMgcGVyc3BlY3RpdmUsIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8gaGF2 ZSBlbXVsYXRvcnMgbWFwIElPVkFzLApub3QgR1BBcy4gIFdlIGFscmVhZHkgaGF2ZSBtYXBjYWNo ZV9pbnZhbGlkYXRlIGluZnJhc3RydWN0dXJlIHRvIGZsdXNoCm1hcHBpbmdzIGFzIHRoZXkgYXJl IGNoYW5nZWQgYnkgdGhlIGd1ZXN0LgoKCkZvciB0aGUgSFZNTGl0ZSBzaWRlIG9mIHRoaW5ncywg bXkga2V5IGNvbmNlcm4gaXMgbm90IHRvIHRyeSBhbmQgZG8gYW55CmRldmVsb3BtZW50IHdoaWNo IHdlIHJlYWxpc3RpY2FsbHkgZXhwZWN0IHRvIGhhdmUgdG8gdW5kby9jaGFuZ2UuICBBcwp5b3Ug c2FpZCB5b3Vyc2VsZiwgd2UgYXJlIHN0cnVnZ2xpbmcgdG8gc3VzdGFpbiwgYW5kIHJlYWxseSBh cmVuJ3QKaGVscGluZyBvdXJzZWx2ZXMgYnkgZG9pbmcgbG90cyBvZiB3b3JrLCBhbmQgc3Vic2Vx dWVudGx5IHJlZG9pbmcgaXQKd2hlbiBpdCBkb2Vzbid0IHdvcms7IFBWSCBpcyB0aGUgbW9zdCBv YnZpb3VzIHJlY2VudCBleGFtcGxlIGhlcmUuCgpJZiBvdGhlcnMgYWdyZWUsIEkgdGhpbmsgdGhh dCBpdCBpcyB3ZWxsIHdvcnRoIG1ha2luZyBzb21lIGNvbmNyZXRlCnBsYW5zIGZvciBpbXByb3Zl bWVudHMgaW4gdGhpcyBhcmVhIGZvciBYZW4gNC44LiAgSSB0aGluayB0aGUgb25seQp2aWFibGUg d2F5IGZvcndhcmQgaXMgdG8gdHJ5IGFuZCBnZXQgb3V0IG9mIHRoZSBjdXJyZW50IGhvbGUgd2Ug YXJlIGluLgoKVGhvdWdodHM/ICAoZXNwZWNpYWxseSBTdGVmYW5vL0FudGhvbnkpCgp+QW5kcmV3 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4u b3JnL3hlbi1kZXZlbAo=