From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 1/9] xen/vpci: introduce basic handlers to trap accesses to the PCI config space Date: Mon, 24 Apr 2017 11:50:58 +0000 Message-ID: <47051b34fc824e0188e94f4db014443a@AMSPEX02CL03.citrite.net> References: <20170420151743.90889-1-roger.pau@citrix.com> <20170420151743.90889-2-roger.pau@citrix.com> <6e46772bd0ff46fe9f9972274e10b9a5@AMSPEX02CL03.citrite.net> <20170424090900.674ri7uwpt26jurj@dhcp-3-128.uk.xensource.com> <5008f7f51d0d4069944c1b300966bee7@AMSPEX02CL03.citrite.net> <20170424100849.2mwdhlz5iwvqsdnf@dhcp-3-128.uk.xensource.com> <40b61e28dbd645cc8419f025ece17605@AMSPEX02CL03.citrite.net> <20170424110247.p2ccu6qncj5wfq2q@dhcp-3-128.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d2cWD-0004qb-3B for xen-devel@lists.xenproject.org; Mon, 24 Apr 2017 11:51:01 +0000 In-Reply-To: <20170424110247.p2ccu6qncj5wfq2q@dhcp-3-128.uk.xensource.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Roger Pau Monne Cc: Wei Liu , Andrew Cooper , Jan Beulich , Ian Jackson , "xen-devel@lists.xenproject.org" , "boris.ostrovsky@oracle.com" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IFJvZ2VyIFBhdSBNb25uZQo+IFNl bnQ6IDI0IEFwcmlsIDIwMTcgMTI6MDMKPiBUbzogUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRA Y2l0cml4LmNvbT4KPiBDYzogeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnOyBrb25yYWQu d2lsa0BvcmFjbGUuY29tOwo+IGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tOyBJYW4gSmFja3Nv biA8SWFuLkphY2tzb25AY2l0cml4LmNvbT47IFdlaSBMaXUKPiA8d2VpLmxpdTJAY2l0cml4LmNv bT47IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT47IEFuZHJldyBDb29wZXIKPiA8QW5k cmV3LkNvb3BlcjNAY2l0cml4LmNvbT4KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDEvOV0geGVu L3ZwY2k6IGludHJvZHVjZSBiYXNpYyBoYW5kbGVycyB0byB0cmFwCj4gYWNjZXNzZXMgdG8gdGhl IFBDSSBjb25maWcgc3BhY2UKPiAKPiBPbiBNb24sIEFwciAyNCwgMjAxNyBhdCAxMToxOToxMEFN ICswMTAwLCBQYXVsIER1cnJhbnQgd3JvdGU6Cj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tCj4gPiA+IEZyb206IFJvZ2VyIFBhdSBNb25uZQo+ID4gPiBTZW50OiAyNCBBcHJpbCAyMDE3 IDExOjA5Cj4gPiA+IFRvOiBQYXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBjaXRyaXguY29tPgo+ ID4gPiBDYzogeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnOyBrb25yYWQud2lsa0BvcmFj bGUuY29tOwo+ID4gPiBib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbTsgSWFuIEphY2tzb24gPElh bi5KYWNrc29uQGNpdHJpeC5jb20+OyBXZWkKPiBMaXUKPiA+ID4gPHdlaS5saXUyQGNpdHJpeC5j b20+OyBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+OyBBbmRyZXcKPiBDb29wZXIKPiA+ ID4gPEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+Cj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg djIgMS85XSB4ZW4vdnBjaTogaW50cm9kdWNlIGJhc2ljIGhhbmRsZXJzIHRvIHRyYXAKPiA+ID4g YWNjZXNzZXMgdG8gdGhlIFBDSSBjb25maWcgc3BhY2UKPiA+ID4KPiA+ID4gT24gTW9uLCBBcHIg MjQsIDIwMTcgYXQgMTA6MzQ6MTVBTSArMDEwMCwgUGF1bCBEdXJyYW50IHdyb3RlOgo+ID4gPiA+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ID4gPiA+IEZyb206IFJvZ2VyIFBhdSBN b25uZQo+ID4gPiA+ID4gU2VudDogMjQgQXByaWwgMjAxNyAxMDowOQo+ID4gPiA+ID4gVG86IFBh dWwgRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+Cj4gPiA+ID4gPiBDYzogeGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnOyBrb25yYWQud2lsa0BvcmFjbGUuY29tOwo+ID4gPiA+ ID4gYm9yaXMub3N0cm92c2t5QG9yYWNsZS5jb207IElhbiBKYWNrc29uIDxJYW4uSmFja3NvbkBj aXRyaXguY29tPjsKPiBXZWkKPiA+ID4gTGl1Cj4gPiA+ID4gPiA8d2VpLmxpdTJAY2l0cml4LmNv bT47IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT47IEFuZHJldwo+ID4gPiBDb29wZXIK PiA+ID4gPiA+IDxBbmRyZXcuQ29vcGVyM0BjaXRyaXguY29tPgo+ID4gPiA+ID4gU3ViamVjdDog UmU6IFtQQVRDSCB2MiAxLzldIHhlbi92cGNpOiBpbnRyb2R1Y2UgYmFzaWMgaGFuZGxlcnMgdG8g dHJhcAo+ID4gPiA+ID4gYWNjZXNzZXMgdG8gdGhlIFBDSSBjb25maWcgc3BhY2UKPiA+ID4gPiA+ Cj4gPiA+ID4gPiBPbiBGcmksIEFwciAyMSwgMjAxNyBhdCAwNTowNzo0M1BNICswMTAwLCBQYXVs IER1cnJhbnQgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0K PiA+ID4gPiA+ID4gPiBGcm9tOiBSb2dlciBQYXUgTW9ubmUgW21haWx0bzpyb2dlci5wYXVAY2l0 cml4LmNvbV0KPiA+ID4gPiA+ID4gPiBTZW50OiAyMCBBcHJpbCAyMDE3IDE2OjE4Cj4gPiA+ID4g PiA+ID4gVG86IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+ID4gPiA+ID4gPiA+IENj OiBrb25yYWQud2lsa0BvcmFjbGUuY29tOyBib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbTsgUm9n ZXIKPiBQYXUKPiA+ID4gPiA+IE1vbm5lCj4gPiA+ID4gPiA+ID4gPHJvZ2VyLnBhdUBjaXRyaXgu Y29tPjsgSWFuIEphY2tzb24gPElhbi5KYWNrc29uQGNpdHJpeC5jb20+Owo+IFdlaQo+ID4gPiBM aXUKPiA+ID4gPiA+ID4gPiA8d2VpLmxpdTJAY2l0cml4LmNvbT47IEphbiBCZXVsaWNoIDxqYmV1 bGljaEBzdXNlLmNvbT47IEFuZHJldwo+ID4gPiA+ID4gQ29vcGVyCj4gPiA+ID4gPiA+ID4gPEFu ZHJldy5Db29wZXIzQGNpdHJpeC5jb20+OyBQYXVsIER1cnJhbnQKPiA+ID4gPFBhdWwuRHVycmFu dEBjaXRyaXguY29tPgo+ID4gPiA+ID4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2MiAxLzldIHhlbi92 cGNpOiBpbnRyb2R1Y2UgYmFzaWMgaGFuZGxlcnMgdG8gdHJhcAo+ID4gPiA+ID4gYWNjZXNzZXMK PiA+ID4gPiA+ID4gPiB0byB0aGUgUENJIGNvbmZpZyBzcGFjZQo+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGdvaW5nIHRvIHJlc2lkZSBpbiB2cGNpLmMg KGFuZCB0aGUKPiBjb3JyZXNwb25kaW5nCj4gPiA+IHZwY2kuaAo+ID4gPiA+ID4gPiA+IGhlYWRl ciksIGFuZCBzaG91bGQgYmUgYXJjaC1hZ25vc3RpYy4gVGhlIGhhbmRsZXJzIGludHJvZHVjZWQg aW4KPiB0aGlzCj4gPiA+ID4gPiBwYXRjaAo+ID4gPiA+ID4gPiA+IHNldHVwIHRoZSBiYXNpYyBm dW5jdGlvbmFsaXR5IHJlcXVpcmVkIGluIG9yZGVyIHRvIHRyYXAgYWNjZXNzZXMgdG8KPiB0aGUK PiA+ID4gUENJCj4gPiA+ID4gPiA+ID4gY29uZmlnIHNwYWNlLCBhbmQgYWxsb3cgZGVjb2Rpbmcg dGhlIGFkZHJlc3MgYW5kIGZpbmRpbmcgdGhlCj4gPiA+ID4gPiBjb3JyZXNwb25kaW5nCj4gPiA+ ID4gPiA+ID4gaGFuZGxlciB0aGF0IHNob3VsZCBoYW5kbGUgdGhlIGFjY2VzcyAoYWx0aG91Z2gg bm8gaGFuZGxlcnMgYXJlCj4gPiA+ID4gPiA+ID4gaW1wbGVtZW50ZWQpLgo+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gTm90ZSB0aGF0IHRoZSB0cmFwcyB0byB0aGUgUENJIElPIHBvcnRzIHJl Z2lzdGVycyAoMHhjZjgvMHhjZmMpIGFyZQo+ID4gPiBzZXR1cAo+ID4gPiA+ID4gPiA+IGluc2lk ZSBvZiBhIHg4NiBIVk0gZmlsZSwgc2luY2UgdGhhdCdzIG5vdCBzaGFyZWQgd2l0aCBvdGhlciBh cmNoZXMuCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBBIG5ldyBYRU5fWDg2X0VNVV9WUENJ IHg4NiBkb21haW4gZmxhZyBpcyBhZGRlZCBpbiBvcmRlciB0bwo+ID4gPiBzaWduYWwKPiA+ID4g PiA+IFhlbgo+ID4gPiA+ID4gPiA+IHdoZXRoZXIKPiA+ID4gPiA+ID4gPiBhIGRvbWFpbiBzaG91 bGQgdXNlIHRoZSBuZXdseSBpbnRyb2R1Y2VkIHZQQ0kgaGFuZGxlcnMsIHRoaXMgaXMKPiBvbmx5 Cj4gPiA+ID4gPiBlbmFibGVkCj4gPiA+ID4gPiA+ID4gZm9yIFBWSCBEb20wIGF0IHRoZSBtb21l bnQuCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBBIHZlcnkgc2ltcGxlIHVzZXItc3BhY2Ug dGVzdCBpcyBhbHNvIHByb3ZpZGVkLCBzbyB0aGF0IHRoZSBiYXNpYwo+ID4gPiA+ID4gZnVuY3Rp b25hbGl0eQo+ID4gPiA+ID4gPiA+IG9mIHRoZSB2UENJIHRyYXBzIGNhbiBiZSBhc3NlcnRlZC4g VGhpcyBoYXMgYmVlbiBwcm92ZW4gcXVpdGUKPiBoZWxwZnVsCj4gPiA+ID4gPiBkdXJpbmcKPiA+ ID4gPiA+ID4gPiBkZXZlbG9wbWVudCwgc2luY2UgdGhlIGxvZ2ljIHRvIGhhbmRsZSBwYXJ0aWFs IGFjY2Vzc2VzIG9yCj4gYWNjZXNzZXMKPiA+ID4gdGhhdAo+ID4gPiA+ID4gPiA+IGV4cGFuZAo+ ID4gPiA+ID4gPiA+IGFjcm9zcyBtdWx0aXBsZSByZWdpc3RlcnMgaXMgbm90IHRyaXZpYWwuCj4g PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBUaGUgaGFuZGxlcnMgZm9yIHRoZSByZWdpc3RlcnMg YXJlIGFkZGVkIHRvIGEgcmVkLWJsYWNrIHRyZWUsIHRoYXQKPiA+ID4gaW5kZXhlcwo+ID4gPiA+ ID4gPiA+IHRoZW0KPiA+ID4gPiA+ID4gPiBiYXNlZCBvbiB0aGVpciBvZmZzZXQuIFNpbmNlIFhl biBuZWVkcyB0byBoYW5kbGUgcGFydGlhbCBhY2Nlc3Nlcwo+IHRvCj4gPiA+IHRoZQo+ID4gPiA+ ID4gPiA+IHJlZ2lzdGVycyBhbmQgYWNjZXNzIHRoYXQgZXhwYW5kIGFjcm9zcyBtdWx0aXBsZSBy ZWdpc3RlcnMgdGhlIGxvZ2ljCj4gaW4KPiA+ID4gPiA+ID4gPiB4ZW5fdnBjaV97cmVhZC93cml0 ZX0gaXMga2luZCBvZiBjb252b2x1dGVkLCBJJ3ZlIHRyaWVkIHRvIHByb3Blcmx5Cj4gPiA+ID4g PiBjb21tZW50Cj4gPiA+ID4gPiA+ID4gaXQKPiA+ID4gPiA+ID4gPiBpbiBvcmRlciB0byBtYWtl IGl0IGVhc2llciB0byB1bmRlcnN0YW5kLgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+IFNpbmNlIGNvbmZpZyBzcGFjZSBpcyBub3QgZXhhY3RseSBodWdlLCBJJ20gd29uZGVy aW5nIHdoeSB5b3UgdXNlZAo+IGFuCj4gPiA+IHItYgo+ID4gPiA+ID4gdHJlZSByYXRoZXIgdGhh biBhIGRpcmVjdCBtYXAgZnJvbSByZWdpc3RlciB0byBoYW5kbGVyPwo+ID4gPiA+ID4KPiA+ID4g PiA+IEhlbGxvLAo+ID4gPiA+ID4KPiA+ID4gPiA+IEZvciBsb2NhbCBQQ0kgdGhlIGNvbmZpZ3Vy YXRpb24gc3BhY2UgaXQncyAyNTZieXRlIG9ubHksIHdoaWNoIG1lYW5zCj4gdXNpbmcKPiA+ID4g MS8yCj4gPiA+ID4gPiBhIHBhZ2UgKDI1NiAqIDgpIHNvIHRoYXQgWGVuIGNhbiBzdG9yZSBhIHBv aW50ZXIgZm9yIGVhY2ggcG9zc2libGUKPiByZWdpc3Rlci4KPiA+ID4gPiA+IFRoZSBleHRlbmRl ZCBjb25maWd1cmF0aW9uIHNwYWNlIChFQ0FNKSBleHRlbmRzIHRoZSBzcGFjZSB0byA0SywKPiA+ ID4gd2hpY2gKPiA+ID4gPiA+IG1lYW5zIHdlCj4gPiA+ID4gPiB3b3VsZCB1c2UgOCBwYWdlcyBw ZXIgZGV2aWNlICg0MDk2KjgpLCBJIHRoaW5rIHRoYXQncyB0b28gbXVjaC4KPiA+ID4gPgo+ID4g PiA+IE9rLCBidXQgSSBzdGlsbCB0aGluayB0aGF0IGFkZGluZyBhbiByLWIgdHJlZSBpbXBsZW1l bnRhdGlvbiBpcyBqdXN0IG1vcmUKPiA+ID4gY29tcGxleGl0eSBpbiB0aGUgd2F5IHRoYXQgaW8g aGFuZGxlcnMgYXJlIHJlZ2lzdGVyZWQgaW4gWGVuLgo+ID4gPgo+ID4gPiBCdXQgdGhpcyBjb21w bGV4aXR5IGlzIGNvbXBsZXRlbHkgaGlkZGVuIGluc2lkZSBvZiB0aGUgaW8gaGFuZGxlciBpdHNl bGYKPiB0aGF0Cj4gPiA+IHRyYXBzIHRoZSBhY2Nlc3MgdG8gMHhjZjgvY2ZjIChvciBFQ0FNIGFy ZWFzKS4KPiA+ID4KPiA+ID4gRG8geW91IG1lYW4gdGhhdCB5b3Ugd291bGQgbGlrZSB0aGlzIGZ1 bmN0aW9uYWxpdHkgdG8gbWFkZSBhdmFpbGFibGUgdG8KPiA+ID4gSU9SRVEKPiA+ID4gY2xpZW50 cyBhbHNvLCBzbyB0aGF0IHRoZXkgY291bGQgcmVnaXN0ZXIgaGFuZGxlcnMgZm9yIHNwZWNpZmlj IFBDSSByZWdpc3RlcnMKPiA+ID4gd2l0aG91dCBvd25pbmcgdGhlIGZ1bGwgY29uZmlndXJhdGlv biBzcGFjZSBvZiBzdWNoIGRldmljZT8KPiA+ID4KPiA+ID4gPiBUQkgsIHRoZSB3aG9sZSB0aGlu ZyBuZWVkcyBhIGNsZWFuLXVwLiBXZSBkb24ndCBoYXZlIHByb3BlciByYW5nZS0KPiBiYXNlZAo+ ID4gPiBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBmb3IgcG9ydCBJTyBvciBNTUlPIGF0IGFsbCAoaW5z dGVhZCB3ZSBwb3RlbnRpYWxseSBjYWxsCj4gdGhlCj4gPiA+ICdhY2NlcHQnIGZ1bmN0aW9uIGZv ciBldmVyeSBoYW5kbGVyIGZvciBldmVyeSBJL08pLiBXZSB0aGVuIGhhdmUgKElJUkMpIGFuCj4g PiA+IG9yZGVyZWQgbGlzdCBmb3IgTVNJLVggQkFSIHJlZ2lzdHJhdGlvbnMgYW5kIG5vdyB5b3Un cmUgcHJvcG9zaW5nIGFuIHItYgo+ID4gPiBzeXN0ZW0gZm9yIFBDSSBjb25maWcgc3BhY2UuCj4g PiA+Cj4gPiA+IE9uZSB3YXkgb3IgYW5vdGhlciBYZW4gbmVlZHMgdG8gdHJhY2sgaGFuZGxlcnMg Zm9yIHRoZSBQQ0kgY29uZmlnIHNwYWNlLAo+ID4gPiBhbmQKPiA+ID4gY3VycmVudGx5IHRoaXMg aXMgbm90IGltcGxlbWVudGVkIGluc2lkZSBvZiBYZW4uCj4gPgo+ID4gV2hhdCBJIG1lYW4gaXMg dGhhdCB3ZSBzaG91bGQgaGF2ZSBzb21lIGZvcm0gb2YgcmFuZ2UtYmFzZWQgSU8gaGFuZGxlcgo+ IHJlZ2lzdHJhdGlvbiBmcmFtZXdvcmsgYW5kIHRoZW4gdGhhdCBjYW4gYmUgdXNlZCBmb3IgcG9y dCBJTywgTU1JTyBhbmQgUENJCj4gY29uZmlnIHNwYWNlLiBGb3IgZXh0ZXJuYWwgY29uZmlnIHNw YWNlIGVtdWxhdGlvbiB0aGVuIHllcyBvZiBjb3Vyc2UgdGhlCj4gZXh0ZXJuYWwgZW11bGF0ZWQg bmVlZHMgdG8gY2xhaW0gdGhlIHdob2xlIHNwYWNlIGZvciB0aGF0IFNCREYsIGJ1dCB0aGF0J3MK PiBqdXN0IGEgZGVnZW5lcmF0ZSBjYXNlIG9mIGNsYWltaW5nIGEgc3BlY2lmaWMgcmFuZ2Ugd2l0 aGluIHRoZSBTQkRGLgo+ID4gVGh1cywgaWYgWGVuIGNhbiBzdGVlciBwb3J0IElPLCBNTUlPIG9y IFBDSSBjb25maWcgYWNjZXNzZXMgYnkgcmFuZ2UgdGhlbgo+IHdlIGNhbiBwb3RlbnRpYWxseSB1 c2UgdGhhdCBmcmFtZXdvcmsgdG8gcmVnaXN0ZXIgaW50ZXJuYWwgZW11bGF0aW9uCj4gaGFuZGxl cnMgb3IgYSBzcGVjaWFsIGVtdWxhdGlvbiBoYW5kbGVyIHRoYXQgc2VuZHMgdGhlIHJlcXVlc3Rz IG91dCB0byBhbgo+IGlvcmVxIHNlcnZlci4KPiAKPiBJTUhPIEknbSBub3Qgc3VyZSBYZW4gbmVl ZHMgUENJIHJlZ2lzdGVyIGJhc2VkIHRyYXBwaW5nIGdyYW51bGFyaXR5LiBJIHdvdWxkCj4gYXJn dWUgdGhhdCB3aGF0ZXZlciAoSU9SRVEgb3IgWGVuIGludGVybmFsIGZ1bmN0aW9uKSB0aGF0IHdh bnRzIHRvIHRyYXAKPiBhY2Nlc3MKPiB0byBhIHNwZWNpZmljIFBDSSBjb25maWcgZGV2aWNlIHJl Z2lzdGVyIG5lZWRzIHRvIHRha2UgY2FyZSBvZiBhbGwgdGhlCj4gcmVnaXN0ZXJzIGZvciB0aGF0 IGRldmljZS4KPiAKCkhhdmluZyBkaXN0aW5jdCBoYW5kZXJzIGZvciBkaXN0aW5jdCBncm91cHMg b2YgbWFrZXMgc2Vuc2UgdGhvdWdoLi4uIGUuZy4gYmVpbmcgYWJsZSB0byByZWdpc3RlciBhIEJB UiBoYW5kbGVyIGZvciBlYWNoIEJBUiBhbmQgdGhlbiBtYXliZSBhbiBNU0ktWCBjYXBhYmlsaXR5 IGhhbmRsZXIgZm9yIHdoZXJldmVyIHRoYXQgYXBwZWFycyBpbiB0aGUgY2FwYWJpbGl0eSBjaGFp biwgZXRjLiBJZiB5b3UgZG9uJ3QgYWxsb3cgc3VjaCByZWdpc3RyYXRpb24gYXQgdGhlIHRvcCBs ZXZlbCB0aGVuIGl0IGVuZHMgdXAgZ2V0dGluZyBkb25lIGF0IHRoZSBuZXh0IGxldmVsLiBUaGF0 IHNhaWQsIGl0IG1heSBtYWtlIG1vcmUgc2Vuc2UgdG8gaGF2ZSBhIHRvcCBsZXZlbCBvZiBlbXVs YXRpb24gdGhhdCBqdXN0IGhhbmRsZXMgYWxsIHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXMgdG8g Y29uZmlnIHNwYWNlIGFuZCB0aGVuIGEgc2Vjb25kIGxldmVsIHRoYXQgaGFzIGNhbGxiYWNrcyBm b3IgQkFSIGVudW1lcmF0aW9uLCBidXMgbWFzdGVyIGVuYWJsZSwgTVNJLVggbWFzay91bm1hc2ss IGV0Yy4KCj4gSSB3aWxsIGxvb2sgaW50byBob29raW5nIHRoaXMgY29kZSAodlBDSSkgaW50byB0 aGUgZXhpc3RpbmcgaHZtXypfaW9yZXEKPiBmdW5jdGlvbmFsaXR5LCBzbyB0aGF0IHZQQ0kgY2xh aW1zIHRoZSBmdWxsIFBDSSBjb25maWcgc3BhY2UgZm9yIGVhY2ggZGV2aWNlIGl0Cj4gbWFuYWdl cy4KCkNvb2wuCgogIFBhdWwKCj4gCj4gVGhhbmtzLCBSb2dlci4KCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=