From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: Discussion about virtual iommu support for Xen guest Date: Fri, 3 Jun 2016 18:14:37 +0100 (BST) Message-ID: References: <5746B3FA.6020401@intel.com> <5746DF93.8090803@citrix.com> <57480327.60609@intel.com> <78d122f0-c773-7fa3-1258-c551937c508e@intel.com> <575081E8.6070609@citrix.com> <57518B78.6060604@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <57518B78.6060604@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andrew Cooper Cc: "Lan, Tianyu" , "yang.zhang.wz@gmail.com" , "Tian, Kevin" , "sstabellini@kernel.org" , "Nakajima, Jun" , "Dong, Eddie" , "ian.jackson@eu.citrix.com" , "xen-devel@lists.xensource.com" , "jbeulich@suse.com" , "anthony.perard@citrix.com" , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org T24gRnJpLCAzIEp1biAyMDE2LCBBbmRyZXcgQ29vcGVyIHdyb3RlOgo+IE9uIDAzLzA2LzE2IDEy OjE3LCBUaWFuLCBLZXZpbiB3cm90ZToKPiA+PiBWZXJ5IHNvcnJ5IGZvciB0aGUgZGVsYXkuCj4g Pj4KPiA+PiBUaGVyZSBhcmUgbXVsdGlwbGUgaW50ZXJhY3RpbmcgaXNzdWVzIGhlcmUuICBPbiB0 aGUgb25lIHNpZGUsIGl0IHdvdWxkCj4gPj4gYmUgdXNlZnVsIGlmIHdlIGNvdWxkIGhhdmUgYSBj ZW50cmFsIHBvaW50IG9mIGNvb3JkaW5hdGlvbiBvbgo+ID4+IFBWSC9IVk1MaXRlIHdvcmsuICBS b2dlciAtIGFzIHRoZSBwZXJzb24gd2hvIGxhc3QgZGlkIEhWTUxpdGUgd29yaywKPiA+PiB3b3Vs ZCB5b3UgbWluZCBvcmdhbmlzaW5nIHRoYXQ/Cj4gPj4KPiA+PiBGb3IgdGhlIHFlbXUveGVuIGlu dGVyYWN0aW9uLCB0aGUgY3VycmVudCBzdGF0ZSBpcyB3b2VmdWwgYW5kIGEgdGFuZ2xlZAo+ID4+ IG1lc3MuICBJIHdpc2ggdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgbWFrZSBhbnkgZGV2ZWxvcG1l bnQgZGVjaXNpb25zCj4gPj4gd2hpY2ggbWFrZXMgdGhlIHNpdHVhdGlvbiB3b3JzZS4KPiA+Pgo+ ID4+IEluIHlvdXIgY2FzZSwgdGhlIHR3byBtb3RpdmF0aW9ucyBhcmUgcXVpdGUgZGlmZmVyZW50 IEkgd291bGQgcmVjb21tZW5kCj4gPj4gZGVhbGluZyB3aXRoIHRoZW0gaW5kZXBlbmRlbnRseS4K PiA+Pgo+ID4+IElJUkMsIHRoZSBpc3N1ZSB3aXRoIG1vcmUgdGhhbiAyNTUgY3B1cyBhbmQgaW50 ZXJydXB0IHJlbWFwcGluZyBpcyB0aGF0Cj4gPj4geW91IGNhbiBvbmx5IHVzZSB4MmFwaWMgbW9k ZSB3aXRoIG1vcmUgdGhhbiAyNTUgY3B1cywgYW5kIElPQVBJQyBSVEVzCj4gPj4gY2FuJ3QgYmUg cHJvZ3JhbW1lZCB0byBnZW5lcmF0ZSB4MmFwaWMgaW50ZXJydXB0cz8gIEluIHByaW5jaXBsZSwg aWYgeW91Cj4gPj4gZG9uJ3QgaGF2ZSBhbiBJT0FQSUMsIGFyZSB0aGVyZSBhbnkgb3RoZXIgaXNz dWVzIHRvIGJlIGNvbnNpZGVyZWQ/ICBXaGF0Cj4gPj4gaGFwcGVucyBpZiB5b3UgY29uZmlndXJl IHRoZSBMQVBJQ3MgaW4geDJhcGljIG1vZGUsIGJ1dCBoYXZlIHRoZSBJT0FQSUMKPiA+PiBkZWxp dmVyIHhhcGljIGludGVycnVwdHM/Cj4gPiBUaGUga2V5IGlzIHRoZSBBUElDIElELiBUaGVyZSBp cyBubyBtb2RpZmljYXRpb24gdG8gZXhpc3RpbmcgUENJIE1TSSBhbmQKPiA+IElPQVBJQyB3aXRo IHRoZSBpbnRyb2R1Y3Rpb24gb2YgeDJhcGljLiBQQ0kgTVNJL0lPQVBJQyBjYW4gb25seSBzZW5k Cj4gPiBpbnRlcnJ1cHQgbWVzc2FnZSBjb250YWluaW5nIDhiaXQgQVBJQyBJRCwgd2hpY2ggY2Fu bm90IGFkZHJlc3MgPjI1NQo+ID4gY3B1cy4gSW50ZXJydXB0IHJlbWFwcGluZyBzdXBwb3J0cyAz MmJpdCBBUElDIElEIHNvIGl0J3MgbmVjZXNzYXJ5IHRvCj4gPiBlbmFibGUgPjI1NSBjcHVzIHdp dGggeDJhcGljIG1vZGUuCj4gCj4gVGhhbmtzIGZvciBjbGFyaWZ5aW5nLgo+IAo+ID4KPiA+IElm IExBUElDIGlzIGluIHgyYXBpYyB3aGlsZSBpbnRlcnJ1cHQgcmVtYXBwaW5nIGlzIGRpc2FibGVk LCBJT0FQSUMgY2Fubm90Cj4gPiBkZWxpdmVyIGludGVycnVwdHMgdG8gYWxsIGNwdXMgaW4gdGhl IHN5c3RlbSBpZiAjY3B1ID4gMjU1Lgo+IAo+IE9rLiAgU28gbm90IGlkZWFsIChhbmQgd2UgY2Vy dGFpbmx5IHdhbnQgdG8gYWRkcmVzcyBpdCksIGJ1dCB0aGlzIGlzbid0Cj4gYSBjb21wbGV0ZSBz aG93IHN0b3BwZXIgZm9yIGEgZ3Vlc3QuCj4gCj4gPj4gT24gdGhlIG90aGVyIHNpZGUgb2YgdGhp bmdzLCB3aGF0IGlzIElHRCBwYXNzdGhyb3VnaCBnb2luZyB0byBsb29rIGxpa2UKPiA+PiBpbiBT a3lsYWtlPyAgSXMgdGhlcmUgYW55IGRldmljZS1tb2RlbCBpbnRlcmFjdGlvbiByZXF1aXJlZCAo aS5lLiB0aGUKPiA+PiBvcHJlZ2lvbiksIG9yIHdpbGwgaXQgd29yayBhcyBhIGNvbXBsZXRlbHkg c3RhbmRhbG9uZSBkZXZpY2U/ICBXaGF0IGFyZQo+ID4+IHlvdXIgcGxhbnMgd2l0aCB0aGUgaW50 ZXJhY3Rpb24gb2YgdmlydHVhbCBncmFwaGljcyBhbmQgc2hhcmVkIHZpcnR1YWwKPiA+PiBtZW1v cnk/Cj4gPj4KPiA+IFRoZSBwbGFuIGlzIHRvIHVzZSBhIHNvLWNhbGxlZCB1bml2ZXJzYWwgcGFz cy10aHJvdWdoIGRyaXZlciBpbiB0aGUgZ3Vlc3QKPiA+IHdoaWNoIG9ubHkgYWNjZXNzZXMgc3Rh bmRhcmQgUENJIHJlc291cmNlICh3L28gb3ByZWdpb24sIFBDSC9NQ0gsIGV0Yy4pCj4gCj4gVGhp cyBpcyBmYW50YXN0aWMgbmV3cy4KPiAKPiA+Cj4gPiAtLS0tCj4gPiBIZXJlIGlzIGEgYnJpZWYg b2YgcG90ZW50aWFsIHVzYWdlcyByZWx5aW5nIG9uIHZJT01NVToKPiA+Cj4gPiBhKSBlbmFibGUg PjI1NSB2Y3B1cyBvbiBYZW9uIFBoaSwgYXMgdGhlIGluaXRpYWwgcHVycG9zZSBvZiB0aGlzIHRo cmVhZC4gCj4gPiBJdCByZXF1aXJlcyBpbnRlcnJ1cHQgcmVtYXBwaW5nIGNhcGFiaWxpdHkgcHJl c2VudCBvbiB2SU9NTVU7Cj4gPgo+ID4gYikgc3VwcG9ydCBndWVzdCBTVk0gKFNoYXJlZCBWaXJ0 dWFsIE1lbW9yeSksIHdoaWNoIHJlbGllcyBvbiB0aGUKPiA+IDFzdCBsZXZlbCB0cmFuc2xhdGlv biB0YWJsZSBjYXBhYmlsaXR5IChHVkEtPkdQQSkgb24gdklPTU1VLiBwSU9NTVUKPiA+IG5lZWRz IHRvIGVuYWJsZSBib3RoIDFzdCBsZXZlbCBhbmQgMm5kIGxldmVsIHRyYW5zbGF0aW9uIGluIG5l c3RlZAo+ID4gbW9kZSAoR1ZBLT5HUEEtPkhQQSkgZm9yIHBhc3N0aHJvdWdoIGRldmljZS4gSUdE IHBhc3N0aHJvdWdoIGlzCj4gPiB0aGUgbWFpbiB1c2FnZSB0b2RheSAodG8gc3VwcG9ydCBPcGVu Q0wgMi4wIFNWTSBmZWF0dXJlKS4gSW4gdGhlCj4gPiBmdXR1cmUgU1ZNIG1pZ2h0IGJlIHVzZWQg Ynkgb3RoZXIgSS9PIGRldmljZXMgdG9vOwo+ID4KPiA+IGMpIHN1cHBvcnQgVkZJTy1iYXNlZCB1 c2VyIHNwYWNlIGRyaXZlciAoZS5nLiBEUERLKSBpbiB0aGUgZ3Vlc3QsCj4gPiB3aGljaCByZWxp ZXMgb24gdGhlIDJuZCBsZXZlbCB0cmFuc2xhdGlvbiBjYXBhYmlsaXR5IChJT1ZBLT5HUEEpIG9u IAo+ID4gdklPTU1VLiBwSU9NTVUgMm5kIGxldmVsIGJlY29tZXMgYSBzaGFkb3dpbmcgc3RydWN0 dXJlIG9mCj4gPiB2SU9NTVUgMm5kIGxldmVsIGJ5IHJlcGxhY2luZyBHUEEgd2l0aCBIUEEgKGJl Y29tZXMgSU9WQS0+SFBBKTsKPiAKPiBBbGwgb2YgdGhlc2UgbG9vayBsaWtlIGludGVyZXN0aW5n IHRoaW5ncyB0byBkby4gIEkga25vdyB0aGVyZSBpcyBhIGxvdAo+IG9mIGludGVyZXN0IGZvciBi KS4KPiAKPiBBcyBhIHF1aWNrIGFzaWRlLCBkb2VzIFhlbiBjdXJyZW50bHkgYm9vdCBvbiBhIFBo aT8gIExhc3QgdGltZSBJIGxvb2tlZAo+IGF0IHRoZSBQaGkgbWFudWFsLCBJIHdvdWxkIGV4cGVj dCBYZW4gdG8gY3Jhc2ggb24gYm9vdCBiZWNhdXNlIG9mIE1DWFNSCj4gZGlmZmVyZW5jZXMgZnJv bSBtb3JlLWNvbW1vbiB4ODYgaGFyZHdhcmUuCj4gCj4gPgo+ID4gLS0tLQo+ID4gQW5kIGJlbG93 IGlzIG15IHRob3VnaHQgdmlhYmlsaXR5IG9mIGltcGxlbWVudGluZyB2SU9NTVUgaW4gUWVtdToK PiA+Cj4gPiBhKSBlbmFibGUgPjI1NSB2Y3B1czoKPiA+Cj4gPiAJbyBFbmFibGUgUTM1IGluIFFl bXUtWGVuOwo+ID4gCW8gQWRkIGludGVycnVwdCByZW1hcHBpbmcgaW4gUWVtdSB2SU9NTVU7Cj4g PiAJbyBWaXJ0dWFsIGludGVycnVwdCBpbmplY3Rpb24gaW4gaHlwZXJ2aXNvciBuZWVkcyB0byBr bm93IHZpcnR1YWwKPiA+IGludGVycnVwdCByZW1hcHBpbmcgKElSKSBzdHJ1Y3R1cmUsIHNpbmNl IElSIGlzIGJlaGluZCB2SU9BUElDL3ZNU0ksCj4gPiB3aGljaCByZXF1aXJlcyBuZXcgaHlwZXJ2 aXNvciBpbnRlcmZhY2VzIGFzIEFuZHJldyBwb2ludGVkIG91dDoKPiA+IAkJKiBlaXRoZXIgZm9y IGh5cGVydmlzb3IgdG8gcXVlcnkgSVIgZnJvbSBRZW11IHdoaWNoIGlzIG5vdAo+ID4gZ29vZDsK PiA+IAkJKiBvciBmb3IgUWVtdSB0byByZWdpc3RlciBJUiBpbmZvIHRvIGh5cGVydmlzb3Igd2hp Y2ggbWVhbnMKPiA+IHBhcnRpYWwgSVIga25vd2xlZGdlIGltcGxlbWVudGVkIGluIGh5cGVydmlz b3IgKHRoZW4gd2h5IG5vdCBwdXR0aW5nCj4gPiB3aG9sZSBJUiBlbXVsYXRpb24gaW4gWGVuPykK PiA+Cj4gPiBiKSBzdXBwb3J0IFNWTQo+ID4KPiA+IAlvIEVuYWJsZSBRMzUgaW4gUWVtdS1YZW47 Cj4gPiAJbyBBZGQgMXN0IGxldmVsIHRyYW5zbGF0aW9uIGNhcGFiaWxpdHkgaW4gUWVtdSB2SU9N TVU7Cj4gPiAJbyBWVC1kIGNvbnRleHQgZW50cnkgcG9pbnRzIHRvIGd1ZXN0IDFzdCBsZXZlbCB0 cmFuc2xhdGlvbiB0YWJsZQo+ID4gd2hpY2ggaXMgbmVzdC10cmFuc2xhdGVkIGJ5IDJuZCBsZXZl bCB0cmFuc2xhdGlvbiB0YWJsZSBzbyB2SU9NTVUKPiA+IHN0cnVjdHVyZSBjYW4gYmUgZGlyZWN0 bHkgbGlua2VkLiBJdCBtZWFuczoKPiA+IAkJKiBYZW4gSU9NTVUgZHJpdmVyIGVuYWJsZXMgbmVz dGVkIG1vZGU7Cj4gPiAJCSogSW50cm9kdWNlIGEgbmV3IGh5cGVyY2FsbCBzbyBRZW11IHZJT01N VSBjYW4gcmVnaXN0ZXIKPiA+IEdQQSByb290IG9mIGd1ZXN0IDFzdCBsZXZlbCB0cmFuc2xhdGlv biB0YWJsZSB3aGljaCBpcyB0aGVuIHdyaXR0ZW4KPiA+IHRvIGNvbnRleHQgZW50cnkgaW4gcElP TU1VOwo+ID4KPiA+IGMpIHN1cHBvcnQgVkZJTy1iYXNlZCB1c2VyIHNwYWNlIGRyaXZlcgo+ID4K PiA+IAlvIEVuYWJsZSBRMzUgaW4gUWVtdS1YZW47Cj4gPiAJbyBMZXZlcmFnZSBleGlzdGluZyAy bmQgbGV2ZWwgdHJhbnNsYXRpb24gaW1wbGVtZW50YXRpb24gaW4gUWVtdSAKPiA+IHZJT01NVTsK PiA+IAlvIENoYW5nZSBYZW4gSU9NTVUgdG8gc3VwcG9ydCAoSU9WQS0+SFBBKSB0cmFuc2xhdGlv biB3aGljaAo+ID4gbWVhbnMgZGVjb3VwbGUgY3VycmVudCBsb2dpYyBmcm9tIFAyTSBsYXllciAo b25seSBmb3IgR1BBLT5IUEEpOwo+ID4gCW8gQXMgYSBtZWFucyBvZiBzaGFkb3dpbmcgYXBwcm9h Y2gsIFhlbiBJT01NVSBkcml2ZXIgbmVlZHMgdG8KPiA+IGtub3cgYm90aCAoSU9WQS0+R1BBKSBh bmQgKEdQQS0+SFBBKSBpbmZvIHRvIHVwZGF0ZSAoSU9WQS0+SFBBKQo+ID4gbWFwcGluZyBpbiBj YXNlIG9mIGFueSBvbmUgaXMgY2hhbmdlZC4gU28gbmV3IGludGVyZmFjZSBpcyByZXF1aXJlZAo+ ID4gZm9yIFFlbXUgdklPTU1VIHRvIHByb3BhZ2F0ZSAoSU9WQS0+R1BBKSBpbmZvIGludG8gWGVu IGh5cGVydmlzb3IKPiA+IHdoaWNoIG1heSBuZWVkIHRvIGJlIGZ1cnRoZXIgY2FjaGVkLiAKPiA+ Cj4gPiAtLS0tCj4gPgo+ID4gQWZ0ZXIgd3JpdGluZyBkb3duIGFib3ZlIGRldGFpbCwgbG9va3Mg aXQncyBjbGVhciB0aGF0IHB1dHRpbmcgdklPTU1VCj4gPiBpbiBRZW11IGlzIG5vdCBhIGNsZWFu IGRlc2lnbiBmb3IgYSkgYW5kIGMpLiBGb3IgYikgdGhlIGh5cGVydmlzb3IKPiA+IGNoYW5nZSBp cyBub3QgdGhhdCBoYWNreSwgYnV0IGZvciBpdCBhbG9uZSBzZWVtcyBub3Qgc3Ryb25nIHRvIHB1 cnN1ZQo+ID4gUWVtdSBwYXRoLiBTZWVtcyB3ZSBtYXkgaGF2ZSB0byBnbyB3aXRoIGh5cGVydmlz b3IgYmFzZWQgCj4gPiBhcHByb2FjaC4uLgo+ID4KPiA+IEFueXdheSBzdG9wIGhlcmUuIFdpdGgg YWJvdmUgYmFja2dyb3VuZCBsZXQncyBzZWUgd2hldGhlciBvdGhlcnMKPiA+IG1heSBoYXZlIGEg YmV0dGVyIHRob3VnaHQgaG93IHRvIGFjY2VsZXJhdGUgVFRNIG9mIHRob3NlIHVzYWdlcwo+ID4g aW4gWGVuLiBYZW4gb25jZSBpcyBhIGxlYWRpbmcgaHlwZXJ2aXNvciBmb3IgbWFueSBuZXcgZmVh dHVyZXMsIGJ1dAo+ID4gcmVjZW50bHkgaXQgaXMgbm90IHN1c3RhaW5pbmcuIElmIGFib3ZlIHVz YWdlcyBjYW4gYmUgZW5hYmxlZCBkZWNvdXBsZWQKPiA+IGZyb20gSFZNbGl0ZS92aXJ0dWFsX3Jv b3RfcG9ydCBlZmZvcnQsIHRoZW4gd2UgY2FuIGhhdmUgc3RhZ2VkIHBsYW4KPiA+IHRvIG1vdmUg ZmFzdGVyIChmaXJzdCBmb3IgSFZNLCBsYXRlciBmb3IgSFZNTGl0ZSkuIDotKQo+IAo+IEkgZGlz bGlrZSB0aGF0IHdlIGFyZSBpbiB0aGlzIHNpdHVhdGlvbiwgYnV0IEkgZ2xhZCB0byBzZWUgdGhh dCBJIGFtIG5vdAo+IHRoZSBvbmx5IG9uZSB3aG8gdGhpbmtzIHRoYXQgdGhlIGN1cnJlbnQgc2l0 dWF0aW9uIGlzIHVuc3VzdGFpbmFibGUuCj4gCj4gVGhlIHByb2JsZW0gaXMgdGhpbmdzIHdlcmUg aGFja2VkIHVwIGluIHRoZSBwYXN0IHRvIGFzc3VtZSBxZW11IGNvdWxkCj4gZGVhbCB3aXRoIGV2 ZXJ5dGhpbmcgbGlrZSB0aGlzLiAgTGF0ZXIsIHBlcmZvcm1hbmNlIHN1Y2tlZCBzdWZmaWNpZW50 bHkKPiB0aGF0IGJpdCBvZiBxZW11IHdlcmUgbW92ZWQgYmFjayB1cCBpbnRvIHRoZSBoeXBlcnZp c29yLCB3aGljaCBpcyB3aHkKPiB0aGUgdklPQVBJQyBpcyBjdXJyZW50bHkgbG9jYXRlZCB0aGVy ZS4gIFRoZSByZXN1bHQgaXMgYSBjb21wbGV0ZQo+IHRhbmdsZWQgcmF0c25lc3QuCj4gCj4gCj4g WGVuIGhhcyAzIGNvbW1vbiB1c2VzIGZvciBxZW11LCB3aGljaCBhcmU6Cj4gMSkgRW11bGF0aW9u IG9mIGxlZ2FjeSBkZXZpY2VzCj4gMikgUENJIFBhc3N0aHJvdWdoCj4gMykgUFYgYmFja2VuZHMK PiAKPiAzIGlzbid0IHJlYWxseSByZWxldmFudCBoZXJlLiAgRm9yIDEsIHdlIGFyZSBiYXNpY2Fs bHkganVzdCB1c2luZyBRZW11Cj4gdG8gcHJvdmlkZSBhbiBMUEMgaW1wbGVtZW50YXRpb24gKHdp dGggc29tZSBwb3B1bGF0ZWQgc2xvdHMgZm9yCj4gZGlzay9uZXR3b3JrIGRldmljZXMpLgo+IAo+ IEkgdGhpbmsgaXQgd291bGQgYmUgZmFyIGNsZWFuZXIgdG8gcmUtZW5naW5lZXIgdGhlIGN1cnJl bnQgWGVuL3FlbXUKPiBpbnRlcmFjdGlvbiB0byBtb3JlIGNsb3NlbHkgcmVzZW1ibGUgcmVhbCBo YXJkd2FyZSwgaW5jbHVkaW5nCj4gY29uc2lkZXJpbmcgaGF2aW5nIG11bHRpcGxlIHZJT0FQSUNz L3ZJT01NVXMvZXRjIHdoZW4gYXJjaGl0ZWN0dXJhbGx5Cj4gYXBwcm9wcmlhdGUuICBJIGV4cGVj dCB0aGF0IGl0IHdvdWxkIGJlIGEgZmFyIGNsZWFuZXIgaW50ZXJmYWNlIHRvIHVzZQo+IGFuZCBl eHRlbmQuICBJIGFsc28gcmVhbGlzZSB0aGF0IHRoaXMgaXNuJ3QgYSBzaW1wbGUgdGFzayBJIGFt Cj4gc3VnZ2VzdGluZywgYnV0IEkgZG9uJ3Qgc2VlIGFueSBvdGhlciB2aWFibGUgd2F5IG91dC4K PiAKPiBPdGhlciBpc3N1ZXMgaW4gdGhlIG1peCBpcyBzdXBwb3J0IGZvciBtdWx0aXBsZSBkZXZp Y2UgZW11bGF0b3JzLCBpbgo+IHdoaWNoIGNhc2UgWGVuIGlzIGFscmVhZHkgcGVyZm9ybWluZyBm aXJzdC1sZXZlbCByZWRpcmVjdGlvbiBvZiBNTUlPCj4gcmVxdWVzdHMuCj4gCj4gRm9yIEhWTUxp dGUsIHRoZXJlIGlzIHNwZWNpZmljYWxseSBubyBxZW11LCBhbmQgd2UgbmVlZCBzb21ldGhpbmcg d2hpY2gKPiBjYW4gZnVuY3Rpb24gd2hlbiB3ZSB3YW50IFBDSSBQYXNzdGhyb3VnaCB0byB3b3Jr LiAgSSBhbSBxdWl0ZSBjb25maWRlbnQKPiB0aGF0IHRoZSBjb3JyZWN0IHNvbHV0aW9uIGhlcmUg aXMgdG8gaGF2ZSBhIGJhc2ljIGhvc3QgYnJpZGdlL3Jvb3QgcG9ydAo+IGltcGxlbWVudGF0aW9u IGluIFhlbiAoYXMgd2UgYWxyZWFkeSBoYXZlIDgwJSBvZiB0aGlzIGFscmVhZHkpLCBhdCB3aGlj aAo+IHBvaW50IHdlIGRvbid0IG5lZWQgYW55IHFlbXUgaW50ZXJhY3Rpb24gZm9yIFBDSSBQYXNz dGhvdWdoIGF0IGFsbCwgZXZlbgo+IGZvciBIVk0gZ3Vlc3RzLgo+IAo+ID5Gcm9tIHRoaXMgcGVy c3BlY3RpdmUsIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8gaGF2ZSBlbXVsYXRvcnMgbWFwIElPVkFz LAo+IG5vdCBHUEFzLiAgV2UgYWxyZWFkeSBoYXZlIG1hcGNhY2hlX2ludmFsaWRhdGUgaW5mcmFz dHJ1Y3R1cmUgdG8gZmx1c2gKPiBtYXBwaW5ncyBhcyB0aGV5IGFyZSBjaGFuZ2VkIGJ5IHRoZSBn dWVzdC4KPiAKPiAKPiBGb3IgdGhlIEhWTUxpdGUgc2lkZSBvZiB0aGluZ3MsIG15IGtleSBjb25j ZXJuIGlzIG5vdCB0byB0cnkgYW5kIGRvIGFueQo+IGRldmVsb3BtZW50IHdoaWNoIHdlIHJlYWxp c3RpY2FsbHkgZXhwZWN0IHRvIGhhdmUgdG8gdW5kby9jaGFuZ2UuICBBcwo+IHlvdSBzYWlkIHlv dXJzZWxmLCB3ZSBhcmUgc3RydWdnbGluZyB0byBzdXN0YWluLCBhbmQgcmVhbGx5IGFyZW4ndAo+ IGhlbHBpbmcgb3Vyc2VsdmVzIGJ5IGRvaW5nIGxvdHMgb2Ygd29yaywgYW5kIHN1YnNlcXVlbnRs eSByZWRvaW5nIGl0Cj4gd2hlbiBpdCBkb2Vzbid0IHdvcms7IFBWSCBpcyB0aGUgbW9zdCBvYnZp b3VzIHJlY2VudCBleGFtcGxlIGhlcmUuCj4gCj4gSWYgb3RoZXJzIGFncmVlLCBJIHRoaW5rIHRo YXQgaXQgaXMgd2VsbCB3b3J0aCBtYWtpbmcgc29tZSBjb25jcmV0ZQo+IHBsYW5zIGZvciBpbXBy b3ZlbWVudHMgaW4gdGhpcyBhcmVhIGZvciBYZW4gNC44LiAgSSB0aGluayB0aGUgb25seQo+IHZp YWJsZSB3YXkgZm9yd2FyZCBpcyB0byB0cnkgYW5kIGdldCBvdXQgb2YgdGhlIGN1cnJlbnQgaG9s ZSB3ZSBhcmUgaW4uCj4gCj4gVGhvdWdodHM/ICAoZXNwZWNpYWxseSBTdGVmYW5vL0FudGhvbnkp CgpHb2luZyBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRpc2N1c3Npb24sIHdoZXRoZXIg d2Ugc2hvdWxkIGVuYWJsZQpRMzUgaW4gUUVNVSBvciBub3QgaXMgYSBkaXN0cmFjdGlvbjogb2Yg Y291cnNlIHdlIHNob3VsZCBlbmFibGUgaXQsIGJ1dApldmVuIHdpdGggUTM1IGluIFFFTVUsIGl0 IG1pZ2h0IG5vdCBiZSBhIGdvb2QgaWRlYSB0byBwbGFjZSB0aGUgdklPTU1VCmVtdWxhdGlvbiB0 aGVyZS4KCkkgYWdyZWUgd2l0aCBBbmRyZXcgdGhhdCB0aGUgY3VycmVudCBtb2RlbCBpcyBmbGF3 ZWQ6IHRoZSBib3VuZGFyeQpiZXR3ZWVuIFhlbiBhbmQgUUVNVSBlbXVsYXRpb24gaXMgbm90IGNs ZWFyIGVub3VnaC4gSW4gYWRkaXRpb24gdXNpbmcKUUVNVSBvbiBYZW4gaW50cm9kdWNlcyBsYXRl bmN5IGFuZCBzZWN1cml0eSBpc3N1ZXMgKHRoZSB3b3JrIHRvIHJ1biBRRU1VCmFzIG5vbi1yb290 IGFuZCB1c2luZyB1bnByaXZpbGVnZWQgaW50ZXJmYWNlcyBpcyBub3QgY29tcGxldGUgeWV0KS4K CkkgdGhpbmsgb2YgUUVNVSBhcyBhIHByb3ZpZGVyIG9mIGNvbXBsZXgsIGhpZ2ggbGV2ZWwgZW11 bGF0b3JzLCBzdWNoIGFzCnRoZSBlMTAwMCwgQ2lycnVzIFZHQSwgU0NTSSBjb250cm9sbGVycywg ZXRjLiwgd2hpY2ggZG9uJ3QgbmVjZXNzYXJpbHkKbmVlZCB0byBiZSBmYXN0LgoKRm9yIGNvcmUg eDg2IGNvbXBvbmVudHMsIHN1Y2ggYXMgdGhlIHZJT01NVSwgZm9yIHBlcmZvcm1hbmNlIGFuZCBl YXNlIG9mCmludGVncmF0aW9uIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGh5cGVydmlzb3IsIGl0IHNl ZW1zIHRvIG1lIHRoYXQgWGVuCndvdWxkIGlzIHRoZSByaWdodCBwbGFjZSB0byBpbXBsZW1lbnQg dGhlbS4gQXMgYSBjb21wYXJpc29uLCBJIHdvdWxkCmNlcnRhaW5seSBhcmd1ZSBpbiBmYXZvciBv ZiBpbXBsZW1lbnRpbmcgdlNNTVUgaW4gdGhlIGh5cGVydmlzb3Igb24gQVJNLgoKCkhvd2V2ZXIg dGhlIGlzc3VlIGlzIHRoZSBQQ0kgcm9vdC1jb21wbGV4LCB3aGljaCB0b2RheSBpcyBpbiBRRU1V LiBJCmRvbid0IHRoaW5rIGl0IGlzIGEgcGFydGljdWxhcmx5IGJhZCBmaXQgdGhlcmUsIGFsdGhv dWdoIEkgY2FuIGFsc28gc2VlCnRoZSBiZW5lZml0IG9mIG1vdmluZyBpdCB0byB0aGUgaHlwZXJ2 aXNvci4gSXQgaXMgcmVsZXZhbnQgaGVyZSBpZiBpdApjYXVzZXMgcHJvYmxlbXMgdG8gaW1wbGVt ZW50aW5nIHZJT01NVSBpbiBYZW4uCgpGcm9tIGEgc29mdHdhcmUgZW5naW5lZXJpbmcgcGVyc3Bl Y3RpdmUsIGl0IHdvdWxkIGJlIG5pY2UgdG8ga2VlcCB0aGUKdHdvIHByb2plY3RzIChpbXBsZW1l bnRpbmcgdklPTU1VIGFuZCBtb3ZpbmcgdGhlIFBDSSByb290IGNvbXBsZXggdG8KWGVuKSBzZXBh cmF0ZSwgZXNwZWNpYWxseSBnaXZlbiB0aGF0IHRoZSBQQ0kgcm9vdCBjb21wbGV4IG9uZSBpcyB3 aXRob3V0CmFuIG93bmVyIGFuZCBhIHRpbWVsaW5lLiBJIGRvbid0IHRoaW5rIGl0IGlzIGZhaXIg dG8gYXNrIFRpYW55dSBvciBLZXZpbgp0byBtb3ZlIHRoZSBQQ0kgcm9vdCBjb21wbGV4IGZyb20g UUVNVSB0byBYZW4gaW4gb3JkZXIgdG8gZW5hYmxlIHZJT01NVQpvbiBYZW4gc3lzdGVtcy4KCklm IHZJT01NVSBpbiBYZW4gYW5kIHJvb3QgY29tcGxleCBpbiBRRU1VIGNhbm5vdCBiZSBtYWRlIHRv IHdvcmsKdG9nZXRoZXIsIHRoZW4gd2UgYXJlIGF0IGFuIGltcGFzc2UuIEkgY2Fubm90IHNlZSBh bnkgZ29vZCB3YXkgZm9yd2FyZAp1bmxlc3Mgc29tZWJvZHkgdm9sdW50ZWVycyB0byBzdGFydCB3 b3JraW5nIG9uIHRoZSBQQ0kgcm9vdCBjb21wbGV4CnByb2plY3Qgc29vbiB0byBwcm92aWRlIEtl dmluIGFuZCBUaWFueXUgd2l0aCBhIGJyYW5jaCB0byBiYXNlZCB0aGVpcgp3b3JrIHVwb24uCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=