From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [RFC] ARM: New (Xen) VGIC design document Date: Thu, 2 Nov 2017 10:56:53 -0700 (PDT) Message-ID: References: <20171011143303.27453-1-andre.przywara@arm.com> <57cd8f84-8a56-132f-cb9a-a6889f743e53@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eAJje-000433-52 for xen-devel@lists.xenproject.org; Thu, 02 Nov 2017 17:56:58 +0000 In-Reply-To: <57cd8f84-8a56-132f-cb9a-a6889f743e53@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andre Przywara Cc: Stefano Stabellini , Marc Zyngier , Eric Auger , Julien Grall , xen-devel@lists.xenproject.org, Christoffer Dall List-Id: xen-devel@lists.xenproject.org T24gVGh1LCAyIE5vdiAyMDE3LCBBbmRyZSBQcnp5d2FyYSB3cm90ZToKPiA+Pj4+IChDQzppbmcg c29tZSBLVk0vQVJNIGZvbGtzIGludm9sdmVkIGluIHRoZSBWR0lDKQo+ID4+Pj4KPiA+Pj4+IHN0 YXJ0aW5nIHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBJVFMgc3VwcG9ydCB3ZSB3ZXJlIHNlZWlu ZyBtb3JlIGFuZAo+ID4+Pj4gbW9yZSBpc3N1ZXMgd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRh dGlvbiBvZiBvdXIgQVJNIEdlbmVyaWMgSW50ZXJydXB0Cj4gPj4+PiBDb250cm9sbGVyIChHSUMp IGVtdWxhdGlvbiwgdGhlIFZHSUMuCj4gPj4+PiBBbW9uZyBvdGhlciBhcHByb2FjaGVzIHRvIGZp eCB0aG9zZSBpc3N1ZXMgaXQgd2FzIHByb3Bvc2VkIHRvIGNvcHkgdGhlCj4gPj4+PiBWR0lDIGVt dWxhdGlvbiB1c2VkIGluIEtWTS4gVGhpcyBvbmUgd2FzIHN1ZmZlcmluZyBmcm9tIHZlcnkgc2lt aWxhcgo+ID4+Pj4gaXNzdWVzLCBhbmQgYSBjbGVhbiBkZXNpZ24gZnJvbSBzY3JhdGNoIGxlYWQg dG8gYSB2ZXJ5IHJvYnVzdCBhbmQKPiA+Pj4+IGNhcGFibGUgcmUtaW1wbGVtZW50YXRpb24uIElu dGVyZXN0aW5nbHkgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBmYWlybHkKPiA+Pj4+IHNlbGYtY29u dGFpbmVkLCBzbyBpdCBzZWVtcyBmZWFzaWJsZSB0byBjb3B5IGl0LiBIb3BlZnVsbHkgd2Ugb25s eSBuZWVkCj4gPj4+PiBtaW5vciBhZGp1c3RtZW50cywgcG9zc2libHkgd2UgY2FuIGV2ZW4gY29w eSBpdCB2ZXJiYXRpbSB3aXRoIHNvbWUKPiA+Pj4+IGFkZGl0aW9uYWwgZ2x1ZSBsYXllciBjb2Rl Lgo+ID4+Pj4KPiA+Pj4+IFN0ZWZhbm8gYXNrZWQgZm9yIGdldHRpbmcgYSBkZXNpZ24gb3ZlcnZp ZXcsIHRvIGFzc2VzcyB0aGUgZmVhc2liaWxpdHkKPiA+Pj4+IG9mIGNvcHlpbmcgdGhlIEtWTSBj b2RlIHdpdGhvdXQgcmV2aWV3aW5nIHRvbnMgb2YgY29kZSBpbiB0aGUgZmlyc3QKPiA+Pj4+IHBs YWNlLgo+ID4+Pj4gU28gdG8gZm9sbG93IFhlbiBydWxlcyBmb3IgbmV3IGZlYXR1cmVzLCB0aGlz IGRlc2lnbiBkb2N1bWVudCBiZWxvdyBpcwo+ID4+Pj4gYW4gYXR0ZW1wdCB0byBkZXNjcmliZSB0 aGUgY3VycmVudCBLVk0gVkdJQyBkZXNpZ24gLSBpbiBhIGh5cGVydmlzb3IKPiA+Pj4+IGFnbm9z dGljIHNlc3Npb24uIEl0IGlzIGEgYml0IG9mIGEgcmV0cm8tZml0IGRlc2lnbiBkZXNjcmlwdGlv biwgYXMgaXQKPiA+Pj4+IGlzIG5vdCBzdHJpY3RseSBmb3J3YXJkLWxvb2tpbmcgb25seSwgYnV0 IGFjdHVhbGx5IGRlc2NyaWJpbmcgdGhlCj4gPj4+PiBleGlzdGluZyBpbXBsZW1lbmF0aW9uIFsx XS4KPiA+Pj4+Cj4gPj4+PiBQbGVhc2UgaGF2ZSBhIGxvb2sgYW5kIGxldCBtZSBrbm93Ogo+ID4+ Pj4gMSkgaWYgdGhpcyBkb2N1bWVudCBoYXMgdGhlIHJpZ2h0IHNjb3BlCj4gPj4+PiAyKSBpZiB0 aGlzIGRvY3VtZW50IGhhcyB0aGUgcmlnaHQgbGV2ZWwgb2YgZGV0YWlsCj4gPj4+PiAzKSBpZiB0 aGVyZSBhcmUgcG9pbnRzIG1pc3NpbmcgZnJvbSB0aGUgZG9jdW1lbnQKPiA+Pj4+IDMpIGlmIHRo ZSBkZXNpZ24gaW4gZ2VuZXJhbCBpcyBhIGZpdAo+ID4+Pgo+ID4+PiBQbGVhc2UgcmVhZCB0aGUg Zm9sbG93aW5nIHN0YXRlbWVudHMgYXMgZ2VudWluZSBxdWVzdGlvbnMgYW5kIGNvbmNlcm5zLgo+ ID4+PiBNb3N0IGlkZWFzIG9uIHRoaXMgZG9jdW1lbnQgYXJlIGdvb2QuIFNvbWUgb2YgdGhlbSBJ IGhhdmUgZXZlbiBzdWdnZXN0ZWQKPiA+Pj4gdGhlbSBteXNlbGYgaW4gdGhlIGNvbnRleHQgb2Yg R0lDIGltcHJvdmVtZW50cyBmb3IgWGVuLiBJIGFza2VkIGZvciBhCj4gPj4+IGNvdXBsZSBvZiBj bGFyaWZpY2F0aW9ucy4KPiA+Pj4KPiA+Pj4gQnV0IEkgZG9uJ3Qgc2VlIHdoeSB3ZSBjYW5ub3Qg aW1wbGVtZW50IHRoZXNlIGlkZWFzIG9uIHRvcCBvZiB0aGUKPiA+Pj4gZXhpc3RpbmcgY29kZSwg cmF0aGVyIHRoYW4gd2l0aCBhIHNlcGFyYXRlIGNvZGViYXNlLCBlbmRpbmcgdXAgd2l0aCB0d28K PiA+Pj4gZHJpdmVycy4gSSB3b3VsZCBwcmVmZXIgYSBuYXR1YWwgZXZvbHV0aW9uLiBTcGVjaWZp Y2FsbHksIHRoZSBmb2xsb3dpbmcKPiA+Pj4gaW1wcm92ZW1lbnRzIHdvdWxkIGJlIHNpbXBsZSBh bmQgd291bGQgZ2l2ZSB1cyBtb3N0IG9mIHRoZSBiZW5lZml0cyBvbgo+ID4+PiB0b3Agb2YgdGhl IGN1cnJlbnQgY29kZWJhc2U6Cj4gPj4+IC0gYWRkaW5nIHRoZSBpcnEgbG9jaywgYW5kIHRoZSBy ZWZjb3VudAo+ID4+PiAtIHRha2luZyBib3RoIHZjcHUgbG9ja3Mgd2hlbiBuZWNlc3NhcnkgKG9u IG1pZ3JhdGlvbiBjb2RlIGZvciBleGFtcGxlCj4gPj4+ICAgaXQgd291bGQgaGVscCBhIGxvdCks IHRoZSBsb3dlciB2Y3B1X2lkIGZpcnN0Cj4gPj4+IC0gbGV2ZWwgaXJxIGVtdWxhdGlvbgo+ID4+ Cj4gPj4gSSB0aGluayBzb21lIG9mIHRob3NlIHBvaW50cyB5b3UgbWVudGlvbmVkIGFyZSBub3Qg ZWFzaWx5IGltcGxlbWVudGVkIGluCj4gPj4gdGhlIGN1cnJlbnQgWGVuLiBGb3IgaW5zdGFuY2Ug SSByYW4gaW50byBsb2NraW5nIG9yZGVyIGlzc3VlcyB3aXRoIHRob3NlCj4gPj4gKnR3byogaW5m bGlnaHQgYW5kIGxyX3F1ZXVlIGxpc3RzLCB3aGVuIHRyeWluZyB0byBpbXBsZW1lbnQgdGhlIGxv Y2sgYW5kCj4gPj4gdGhlIHJlZmNvdW50Lgo+ID4+IEFsc28gdGhpcyAicHV0IHZJUlFzIGludG8g TFJzIGVhcmx5LCBidXQgcG9zc2libHkgcmlwIHRoZW0gb3V0IGFnYWluIiBpcwo+ID4+IHJlYWxs eSBjb21wbGljYXRpbmcgdGhpbmdzIGEgbG90Lgo+ID4+Cj4gPj4gSSBiZWxpZXZlIG9ubHkgbGV2 ZWwgSVJRcyBjb3VsZCBiZSBhZGRlZCBpbiBhIHJlbGF0aXZlbHkgc3RyYWlnaHQKPiA+PiBmb3J3 YXJkIG1hbm5lci4KPiA+Pgo+ID4+IFNvIHRoZSBwcm9ibGVtIHdpdGggdGhlIGV2b2x1dGlvbmFy eSBhcHByb2FjaCBpcyB0aGF0IGl0IGdlbmVyYXRlcyBhIGxvdAo+ID4+IG9mIHBhdGNoZXMsIHNv bWUgb2YgdGhlbSBxdWl0ZSBpbnZhc2l2ZSwgb3RoZXJzIGNyZWF0aW5nIGhhcmQtdG8tcmVhZAo+ ID4+IGRpZmZzLCB3aGljaCBhcmUgYm90aCBoYXJkIHRvIHJldmlldy4KPiA+PiBBbmQgY2hhbmNl cyBhcmUgdGhhdCB0aGUgYWN0dWFsIHJlc3VsdCB3b3VsZCBiZSBwcmV0dHkgY2xvc2UgdG8gdGhl IEtWTQo+ID4+IGNvZGUuIFRvIGJlIGNsZWFyOiBJIGhhY2tlZCB0aGUgWGVuIFZHSUMgaW50byB0 aGUgS1ZNIGRpcmVjdGlvbiBpbiBhIGZldwo+ID4+IGRheXMgc29tZSBtb250aHMgYWdvLCBidXQg aXQgdG9vayBtZSAqd2Vla3MqIHRvIG1ha2Ugc2FuZSBwYXRjaGVzIG9mCj4gPj4gb25seSB0aGUg Zmlyc3QgcGFydCBvZiBpdC4KPiA+PiBBbmQgdGhpcyB3b3VsZCBub3QgY292ZXIgYWxsIHRob3Nl IGdlbmVyYWwsIHRlZGlvdXMgY29ybmVyIGNhc2VzIHRoYXQKPiA+PiB0aGUgVkdJQyBjb21lcyB3 aXRoLiBUaG9zZSB3b3VsZCBuZWVkIHRvIGJlIGZpeGVkIGluIGEgcGFpbmZ1bCBwcm9jZXNzLAo+ ID4+IHdoaWNoIHdlIGNvdWxkIGF2b2lkIGJ5ICJsaWZ0aW5nIiB0aGUgS1ZNIGNvZGUuCj4gPiAK PiA+IEkgaGVhciB5b3UsIGJ1dCB0aGUgcHJpbmNpcGFsIGNvc3QgaGVyZSBpcyB0aGUgcmV2aWV3 IHRpbWUsIG5vdCB0aGUKPiA+IGRldmVsb3BtZW50IHRpbWUuIEp1bGllbiB0b2xkIG1lIHRoYXQg aXQgd291bGQgYmUgcHJldHR5IG11Y2ggdGhlIHNhbWUKPiA+IGZvciBoaW0gaW4gdGVybXMgb2Yg dGltZSBpdCB0YWtlcyB0byByZXZpZXcgdGhlIGNoYW5nZXMsIGl0IGRvZXNuJ3QKPiA+IG1hdHRl ciBpZiBpdCdzIGEgbmV3IGRyaXZlciBvciBjaGFuZ2VzIHRvIHRoZSBleGlzdGluZyBkcml2ZXIu IEZvciBtZSwKPiA+IGl0IHdvdWxkbid0IGJlIHRoZSBzYW1lOiBJIHRoaW5rIGl0IHdvdWxkIHRh a2UgbWUgZmFyIGxlc3MgdGltZSB0bwo+ID4gcmV2aWV3IHRoZW0gaWYgdGhleSB3ZXJlIGFnYWlu c3QgdGhlIGV4aXN0aW5nIGNvZGViYXNlLgo+IAo+IEkgYW0gbm90IHNvIHN1cmUgYWJvdXQgdGhp cy4gVGhlIGNoYW5nZXMgYXJlIHF1aXRlIGRyYW1hdGljLCBhbmQgdGhvc2UKPiBjaGFuZ2VzIHRl bmQgdG8gcHJvZHVjZSBob3JyaWJsZSBkaWZmcy4gT3Igd2UgdHJ5IHRvIG1pdGlnYXRlIHRoaXMs IGJ1dAo+IHRoaXMgY29tZXMgYXQgYSBjb3N0IG9mIGhhdmluZyAqbWFueSogcGF0Y2hlcywgd2hp Y2ggdGFrZSBhIHdoaWxlIHRvCj4gcHJvZHVjZS4KPiBCdXQgaWYgd2UgaW5zdGFudGlhdGUgYSBu ZXcgVkdJQyBpbXBsZW1lbnRhdGlvbiBmcm9tIHNjcmF0Y2gsIHdlIGNhbgo+IHByb3ZpZGUgdmVy eSBuaWNlLXRvLXJldmlldyBwYXRjaGVzLCBiZWNhdXNlIHRoZSBwYXRjaGVzIGNhbiBmb2N1cyBv bgo+IGxvZ2ljYWwgY2hhbmdlcyBhbmQgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IGJpc2VjdGFi aWxpdHkuCgpBbGwgcmlnaHQKCgo+ID4gSG93ZXZlciwgYXMgSSB3cm90ZSwgdGhpcyBpcyBub3Qg bXkgZm9yZW1vc3QgY29uY2Vybi4gSSB3b3VsZCBiZSB1cCB0bwo+ID4gY29tbWl0dGluZyBteXNl bGYgdG8gcmV2aWV3IHRoaXMgZXZlbiBpZiB3ZSBkZWNpZGUgdG8gZ28gZm9yIGEgbmV3Cj4gPiBk cml2ZXIuCj4gPiAKPiA+IAo+ID4+PiBJZiB3ZSBkbyBlbmQgdXAgd2l0aCBhIHNlY29uZCBzZXBh cmF0ZSBkcml2ZXIgZm9yIHRlY2huaWNhbCBvciBwcm9jZXNzCj4gPj4+IHJlYXNvbnMsIEkgd291 bGQgZXhwZWN0IHRoZSByZWd1bGFyIFhlbiBzdWJtaXNzaW9uL3JldmlldyBwcm9jZXNzIHRvIGJl Cj4gPj4+IGZvbGxvd2VkLiBUaGUgY29kZSBzdHlsZSB3aWxsIGJlIGRpZmZlcmVudCwgdGhlIGhv b2tzIGludG8gdGhlIHJlc3Qgb2YKPiA+Pj4gdGhlIGh5cGVydmlzb3JzIHdpbGwgYmUgZGlmZmVy ZW50IGFuZCB0aGluZ3Mgd2lsbCBiZSBnZW5lcmFsbHkgY2hhbmdlZC4KPiA+Pj4gVGhlIG5ldyBW L0dJQyBtaWdodCBiZSBkZXJpdmVkIGZyb20gS1ZNLCBidXQgaXQgc2hvdWxkIGVuZCB1cCBsb29r aW5nCj4gPj4+IGFuZCBmZWVsaW5nIGxpa2UgYSAxMDAlIGdlbnVpbmUgWGVuIGNvbXBvbmVudC4g QWZ0ZXIgYWxsLCB3ZSdsbAo+ID4+PiBtYWludGFpbiBpdCBnb2luZyBmb3J3YXJkLiBJIGRvbid0 IHdhbnQgYSBjb3B5IG9mIGEgTGludXggZHJpdmVyIHdpdGgKPiA+Pj4gZ2x1ZSBjb2RlLiBUaGUg WGVuIGNvbW11bml0eSBjYW5ub3QgYmUgZXhwZWN0ZWQgbm90IHRvIHJldmlldyB0aGUKPiA+Pj4g c3VibWlzc2lvbiwgYnV0IGlmIHdlIHJldmlldyBpdCwgdGhlbiB3ZSdsbCBhc2sgZm9yIGNoYW5n ZXMuIE9uY2Ugd2UKPiA+Pj4gY2hhbmdlIHRoZSBjb2RlLCB0aGVyZSB3aWxsIGJlIG5vIHBvaW50 IGluIGtlZXBpbmcgdGhlIExpbnV4IGNvZGUKPiA+Pj4gc2VwYXJhdGUgd2l0aCBnbHVlIGNvZGUu IFdlIHNob3VsZCBmdWxseSBhZGFwdCBpdCB0byBYZW4uCj4gPj4KPiA+PiBJIHNlZSB5b3VyIHBv aW50LCBhbmQgdGhpcyBhY3R1YWxseSBzaW1wbGlmaWVzICpteSogd29yaywgYnV0IEkgYW0gYSBi aXQKPiA+PiB3b3JyaWVkIGFib3V0IHRoZSBlZmZlY3RzIG9mIGhhdmluZyB0d28gc2VwYXJhdGUg aW1wbGVtZW50YXRpb25zIHdoaWNoCj4gPj4gdGhlbiBkaXZlcmdlIG92ZXIgdGltZS4KPiA+PiBJ biB0aGUgbW9tZW50IHdlIGhhdmUgdHdvIHNlcGFyYXRlIGltcGxlbWVudGF0aW9ucyBhcyB3ZWxs LCBidXQgdGhleSBhcmUKPiA+PiBxdWl0ZSBkaWZmZXJlbnQsIHdoaWNoIGhhcyB0aGUgYWR2YW50 YWdlIG9mIGRvaW5nIHRoaW5ncyBkaWZmZXJlbnRseQo+ID4+IGVub3VnaCB0byBoZWxwIGluIGZp bmRpbmcgYnVncyBpbiB0aGUgb3RoZXIgb25lIChzb21ldGhpbmcgd2Ugc2hvdWxkCj4gPj4gYWN0 dWFsbHkgZXhwbG9pdCBpbiB0ZXN0aW5nLCBJIGJlbGlldmUpLgo+ID4gCj4gPiBJdCBpcyBhIG1h dHRlciBvZiBvd25lcnNoaXAgYW5kIHJlc3BvbnNpYmlsaXRpZXMuIFRoZSBnaWMgYW5kIHZnaWMK PiA+IGNvbXBvbmVudHMgYXJlIGNyaXRpY2FsIHRvIHRoZSBoeXBlcnZpc29yIGZ1bmN0aW9uYWxp dGllcywgYW5kIGFzIFhlbgo+ID4gUHJvamVjdCB3ZSBuZWVkIHRvIHRha2Ugb3duZXJzaGlwIG9m IHRoZW0uIEl0IG1lYW5zIGZpeGluZyBidWdzIGFuZAo+ID4gbWFpbnRhaW5pbmcgdGhlbSBnb2lu ZyBmb3J3YXJkLiBJdCBtYWtlcyBzZW5zZSB0byBoYXZlIHRoZW0gZnVsbHkKPiA+IGludGVncmF0 ZWQgaW50byBYZW4uCj4gCj4gWWVzLCBJIGNhbiBzZWUgdGhhdC4gSSBub3cgY2FtZSB0byB0aGUg YmVsaWVmIHRoYXQgdGFraW5nIHRoZSBLVk0gY29kZQo+ICp2ZXJiYXRpbSogaXMgbm90IHdvcnRo IHRoZSBlZmZvcnQ6IGluIHRoZSBtb21lbnQgSSBhbSBzdHJ1Z2dsaW5nIHdpdGgKPiB0aW55LCBi dXQgbmFzdHkgZGV0YWlscyB0byBiZSBzb2x2ZWQuCj4gSWYgd2UgYWxsb3cgdGhlIGNvZGUgdG8g YmUgY2hhbmdlZCwgd2UgZ2V0IG11Y2ggbW9yZSBmcmVlZG9tLgoKU291bmRzIGdvb2QuCgoKPiA+ PiBTbyBob3cgaXMgeW91ciBmZWVsaW5nIHRvd2FyZHMgc29tZSBzaGFyZWQgImxpYnZnaWMiPyBJ IHVuZGVyc3RhbmQgdGhhdAo+ID4+IHBlb3BsZSBhcmUgbm90IHRvbyBoYXBweSBhYm91dCB0aGF0 IGV4dHJhIG1haW50ZW5hbmNlIGNvc3Qgb2YgaGF2aW5nIGEKPiA+PiBzZXBhcmF0ZSByZXBvc2l0 b3J5LCBidXQgSSBhbSBjdXJpb3VzIHdoYXQgeW91ciwgTWFyYydzIGFuZAo+ID4+IENocmlzdG9m ZmVyJ3MgdGFrZSBpcyBvbiB0aGlzIGlkZWEuCj4gPiAKPiA+IEkgYW0gb3BlbiB0byB0aGlzIGRp c2N1c3Npb24uIEl0IGlzIG5pY2UgaW4gdGhlb3J5LCBidXQgaXQgaXMgaGFyZCB0bwo+ID4gcHV0 IGludG8gcHJhY3RpY2UuIEkgdGhpbmsgbmVpdGhlciBKdWxpZW4gYW5kIEkgbm9yIENocmlzdG9m ZmVyIGFuZCBNYXJjCj4gPiBsaWtlIHRoZSBpZGVhIG9mIGEgc2VwYXJhdGUgcmVwb3NpdG9yeS4g SXQgaXMgYSBwYWluIGFuZCBpdCBpcyB1Z2x5LiBCdXQKPiA+IGlmIHdlIGRvbid0IGhhdmUgYSBz aW5nbGUgcmVwb3NpdG9yeSwgaG93IGNhbiB3ZSBzaGFyZSB0aGUgY29kZWJhc2U/Cj4gPiAKPiA+ IEFsc28ga2VlcCBpbiBtaW5kIHRoYXQgWGVuIGFuZCBMaW51eCBoYXZlIGRpZmZlcmVudCByZWxl YXNlIGN5Y2xlcyBhbmQKPiA+IHRoZXkgZ28gaW50byBmcmVlemUgYXQgZGlmZmVyZW50IHRpbWVz LiBJdCBhZmZlY3RzIHdoZW4vaG93IGZpeGVzIGNhbgo+ID4gZ2V0IGludG8gdGhlIGNvZGViYXNl Lgo+ID4gCj4gPiBVbmxlc3MgeW91IGNvbWUgdXAgd2l0aCBhIGNsZXZlciBpZGVhIG9uIGhvdyB0 byBtYWtlIHRoaXMgd29yaywgSSB0aGluawo+ID4gd2UgYXJlIGJldHRlciBvZmYgd2l0aCBvdXIg b3duIHZlcnNpb24gb2YgdGhlIGRyaXZlci4KPiAKPiBZZWFoLCBJIGFncmVlLCBpdCB3b3VsZCBw cm9iYWJseSBiZSBxdWl0ZSBzb21lIHBhaW4sIHdoaWNoIGlzIGhhcmQgdG8KPiBqdXN0aWZ5LCBl c3BlY2lhbGx5IGZyb20gdGhlIExpbnV4IHNpZGUuCgpSaWdodAoKCj4gPj4+PiAjIyMgVmlydHVh bCBJUlEgcmVmZXJlbmNlcwo+ID4+Pj4KPiA+Pj4+IFRoZXJlIGlzIGEgZnVuY3Rpb24gYHZnaWNf Z2V0X2lycSgpYCB3aGljaCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIGEgdmlydHVhbCBJUlEKPiA+ Pj4+IGdpdmVuIGl0cyBudW1iZXIuCj4gPj4+PiBGb3IgcHJpdmF0ZSBJUlFzIGFuZCBTUElzIGl0 IGlzIGV4cGVjdGVkIHRoYXQgdGhpcyBqdXN0IGluZGV4ZXMgYSBzdGF0aWMgYXJyYXkuCj4gPj4+ PiBGb3IgTFBJcyAod2hpY2ggYXJlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhdCBydW4gdGltZSkg dGhpcyBpcyBleHBlY3RlZCB0bwo+ID4+Pj4gaXRlcmF0ZSBhIGRhdGEgc3RydWN0dXJlIChsaWtl IGEgbGlua2VkIGxpc3QpIHRvIGZpbmQgdGhlIHJpZ2h0IHN0cnVjdHVyZS4KPiA+Pj4+IEluIGFu eSBjYXNlIGEgY2FsbCB0byBgdmdpY19nZXRfaXJxYCB3aWxsIGluY3JlYXNlIGEgcmVmY291bnQs IHdoaWNoIHdpbGwKPiA+Pj4+IHByZXZlbnQgTFBJcyBmcm9tIGJlaW5nIGRlLWFsbG9jYXRlZCB3 aGlsZSBhbm90aGVyIHBhcnQgb2YgdGhlIFZHSUMgaXMgc3RpbGwKPiA+Pj4+IGhvbGRpbmcgYSBy ZWZlcmVuY2UuIFRodXMgYW55IGNhbGxlciB0byBgdmdpY19nZXRfaXJxYCBzaGFsbCBjYWxsCj4g Pj4+PiBgdmdpY19wdXRfaXJxKClgIGFmdGVyIGl0IGlzIGRvbmUgd2l0aCBoYW5kbGluZyB0aGlz IGludGVycnVwdC4KPiA+Pj4+IEFuIGV4Y2VwdGlvbiB3b3VsZCBiZSBpZiB0aGUgdmlydHVhbCBJ UlEgaXMgZXZlbnR1YWxseSBpbmplY3RlZCBpbnRvIGEgVkNQVS4gSW4KPiA+Pj4+IHRoaXMgY2Fz ZSB0aGUgVkNQVSBob2xkcyB0aGF0IHJlZmVyZW5jZSBhbmQgaXQgaXMga2VwdCBhcyBsb25nIGFz IHRoZSBndWVzdAo+ID4+Pj4gc2VlcyB0aGlzIHZpcnR1YWwgSVJRLiBUaGUgcmVmY291bnQgd291 bGQgb25seSBiZSBkZWNyZWFzZWQgdXBvbiB0aGUgSVJRIGhhdmluZwo+ID4+Pj4gYmVlbiBFT0ll ZCBieSB0aGUgZ3Vlc3QgYW5kIGl0IGhhdmluZyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgVkNQVSBs aXN0Lgo+ID4+Pgo+ID4+PiBJIHVuZGVyc3RhbmQgdGhlIGlkZWEgYmVoaW5kIGEgcmVmY291bnQg YW5kIHNvdW5kcyBsaWtlIGEgZ29vZCB0aGluZyB0bwo+ID4+PiBoYXZlLgo+ID4+Pgo+ID4+PiBM ZXQgbWUgYXNrIHlvdSBhIGNvdXBsZSBvZiBxdWVzdGlvbnMuIEhvdyBkb2VzIGl0IGhlbHAgd2l0 aCB0aGUgaXNzdWUKPiA+Pj4gdGhhdCBhbiBMUEkgY291bGQgYmUgZGlzY2FyZGVkIGFuZCByZW1h cHBlZCAoTUFQVEkpIGZyb20gYW5vdGhlcgo+ID4+PiBwY3B1IHdoaWxlIGl0IGNvdWxkIHN0aWxs IGJlIGluIGFuIExSPwo+ID4+Cj4gPj4gT24gRElTQ0FSRCB3ZSByZW1vdmUgaXQgZnJvbSB0aGUg bGlzdCBvZiBtYXBwZWQgTFBJcywgYnV0IGRvbid0IGZyZWUgdGhlCj4gPj4gc3RydWN0dXJlLiBT byBhbnkgdmdpY19nZXRfbHBpKGxwaV9ucikgd29uJ3QgZmluZCBpdCBhbnltb3JlLiBCdXQgc2lu Y2UKPiA+PiB0aGUgaW50ZXJydXB0IGlzIGluIGFuIExSLCB0aGUgVkNQVSdzIGFwX2xpc3Qgc3Rp bGwgcmVmZXJlbmNlcyB0aGUKPiA+PiB2Z2ljX2lycSBzdHJ1Y3R1cmUsIHNvIHdlIGNhbiBkbyB0 aGUgd2hvbGUgSVJRIGxpZmUgY3ljbGUgbWFuYWdlbWVudAo+ID4+IGp1c3QgYXMgbm9ybWFsIChi ZWNhdXNlIGJlaW5nIGEgbGlzdCBtZW1iZXIgaXMgd2hhdCBjb3VudHMgd2hlbiBpdCBjb21lcwo+ ID4+IHRvIGEgImxpZmUiIGludGVycnVwdCkuCj4gPj4gT25jZSB0aGlzIExQSSBpcyBFT0llZCwg d2UgcmVtb3ZlIGl0IGZyb20gdGhlIFZDUFUgbGlzdCwgd2hpY2ggZGVjcmVhc2VzCj4gPj4gdGhl IHJlZmNvdW50IGFuZCBtb3N0IHByb2JhYmx5IHdpbGwgZnJlZSB0aGUgbWVtb3J5LCBzaW5jZSB0 aGUgdmFsdWUgaGFzCj4gPj4gYmVjb21lIHplcm8gYnkgdGhlbi4gTm9ybWFsbHksIHdpdGhvdXQg dW5tYXBwaW5nIGl0IGJlZm9yZSwgdGhlCj4gPj4gcmVmZXJlbmNlIGhlbGQgYnkgdGhlIElUUyBs aXN0IHdvdWxkIG1ha2Ugc3VyZSB0aGUgcmVmY291bnQgc3RheXMKPiA+PiBncmVhdGVyIHRoYW4g MC4KPiA+Pgo+ID4+IE5vdyB3aGVuIHRoZXJlIGlzIGEgTUFQVEkgdG8gdGhlIHNhbWUgTFBJIG51 bWJlciBtZWFud2hpbGUsIHRoaXMgd2lsbAo+ID4+IGFsbG9jYXRlIGEgbmV3IHN0cnVjdHVyZSAo dGhpcyBpcyBhIG5ldyBpbnRlcnJ1cHQhKSBhbmQgZW50ZXJzIHRoaXMgaW50bwo+ID4+IHRoZSBJ VFMgbGlzdC4gU28gYW55b25lIGFza2luZyBmb3IgdGhpcyBuZXcgTFBJICpudW1iZXIqIHdpbGwg Z2V0IHRoZQo+ID4+IHJlZmVyZW5jZSB0byB0aGUgbmV3IElSUS4gVGhpbms6IGRlbGV0aW5nIGEg ZmlsZSBhbmQgY3JlYXRpbmcgYSBuZXcgb25lCj4gPj4gd2l0aCB0aGUgc2FtZSBuYW1lIG9uIGEg VU5JWCBzeXN0ZW0sIGFueSBvbGQgdXNlcnMgb2YgYW4gYWxyZWFkeSBvcGVuZWQKPiA+PiBmaWxl IGRlc2NyaXB0b3Igd2lsbCBzdGlsbCB1c2UgdGhlIGRlbGV0ZWQgZmlsZSwgYnV0IGFuIG9wZW4o KSB3aWxsCj4gPj4gcmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBuZXcgZmlsZS4KPiA+IAo+ID4gVGhp cyBuZWVkcyB0byBiZSBjYXB0dXJlZCBpbiB0aGUgZG9jLgo+ID4gCj4gPiBBcmUgdmdpY19pcnEg c3RydWN0IGR5bmFtaWNhbGx5IGFsbG9jYXRlZD8KPiA+IElzIHRoZXJlIGEgcmV1dGlsaXphdGlv bgo+ID4gc2NoZW1lIHRvIGF2b2lkIGEgbWFsaWNpb3VzIGd1ZXN0IGZyb20gc3BhbW1pbmcgWGVu IHdpdGggTFBJIHJlcXVlc3RzPwo+ID4gTXVsdGlwbGUgc3RydWN0IHZnaWNfaXJxIGZvciB0aGUg c2FtZSBMUEkgd291bGQgY2F1c2UgZXZlbiBtb3JlIG1lbW9yeQo+ID4gYWxsb2NhdGlvbnMuCj4g Cj4gSW50ZXJlc3RpbmcgcG9pbnQuIEkgbmVlZCB0byB0aGluayBhYm91dCBhIG5lYXQgc29sdXRp b24uIEZvciBub3JtYWwKPiBjYXNlcyBJIHRoaW5rIHdlIG1pZ2h0IHdhbnQgdG8gc3RpY2sgd2l0 aCB0aGUgY3VycmVudCBYZW4gc2NoZW1lIG9mCj4gYWxsb2NhdGluZyB0aGUgdklSUSBzdHJ1Y3Rz IHdoZW4gd2UgbWFwIGEgZGV2aWNlLHRoZW4gaGFuZGluZyBvdXQKPiBwb2ludGVycyB0byBzb21l IGFycmF5IG1lbWJlciBvbiB2Z2ljX2FkZF9scGkoKS4gTWF5YmUgd2UgcmUtcG9pbnRlciB0aGUK PiBleGlzdGluZyB2SVJRIHRvIHBvaW50IHRvIHNvbWUgb3RoZXIgbG9jYXRpb24sIGFuZCB1c2Ug dGhlIGRldmljZQo+IHByb3ZpZGVkIHN0b3JhZ2UKClllcywgSSB0aGluayB3ZSBuZWVkIHRvIHRh a2Ugc29tZSBpZGVhcyBmcm9tIG91ciBsb25nIElUUyBkZXNpZ24Kc2Vzc2lvbnMgdG8gbWluaW1p emUgdGhlIGNoYW5jZXMgb2YgRE9TIGZyb20gYSBtYWxpY2lvdXMgZ3Vlc3QuIEZvcgpleGFtcGxl LCB3ZSBoYXZlIGEgc2NoZW1lIHRvIHJldXNlIHBlbmRpbmdfaXJxIHN0cnVjdCBpbiB0aGUgSVRT IHRoYXQgSQp0aGluayBpdCBpcyB3b3J0aCBrZWVwaW5nLgoKCj4gPiBJZiBib3RoIHRoZSBvbGQg YW5kIHRoZSBuZXcgdmdpY19pcnEgc3RydWN0IGVuZCB1cCBiZWluZyB3cml0dGVuIHRvIExScywK PiA+IHdvdWxkbid0IGl0IGNhdXNlIHByb2JsZW1zPwo+IAo+IENhbid0IGhhcHBlbi4gRElTQ0FS RCByZW1vdmVzIHRoZSBwZW5kaW5nIHN0YXRlLiBTaW5jZSBMUElzIGhhdmUgbm8KPiBhY3RpdmUg c3RhdGUsIHVwb24gdGhlIFZDUFUgZXhpdGluZyB0aGlzIExQSSdzIGxpZmUgY3ljbGUgaGFzIGZp bmlzaGVkLgo+IFNvIHdlIGp1c3Qga2VlcCBpdCBhcm91bmQgYXMgbG9uZyBhcyBpdCdzIHN0aWxs IGluIGEgVkNQVSwgYnV0IGl0Cj4gdmFuaXNoZXMgYXMgc29vbiBhcyB0aGlzIFZDUFUgZXhpdHMu CgpQbGVhc2UgYWRkIHRoZXNlIGRldGFpbHMgdG8gdGhlIGRvYy4gSW4gZmFjdCwgbGV0J3MgdHVy biB0aGlzIGRvYyBpbnRvIGEKdXNlZnVsIGRvY3VtZW50YXRpb24gZm9yIHRoZSBuZXcgaW1wbGVt ZW50YXRpb24uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK