From mboxrd@z Thu Jan 1 00:00:00 1970 From: Karol Herbst Subject: Re: [PATCH v4] pci: prevent putting nvidia GPUs into lower device states on certain intel bridges Date: Fri, 22 Nov 2019 12:34:34 +0100 Message-ID: References: <20191121112821.GU11621@lahna.fi.intel.com> <20191121114610.GW11621@lahna.fi.intel.com> <20191121125236.GX11621@lahna.fi.intel.com> <20191121194942.GY11621@lahna.fi.intel.com> <20191122103637.GA11621@lahna.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: "Rafael J. Wysocki" Cc: Linux PM , Linux PCI , Mika Westerberg , Mario Limonciello , "Rafael J . Wysocki" , LKML , dri-devel , Bjorn Helgaas , nouveau List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBOb3YgMjIsIDIwMTkgYXQgMTI6MzAgUE0gUmFmYWVsIEouIFd5c29ja2kgPHJhZmFl bEBrZXJuZWwub3JnPiB3cm90ZToKPgo+IE9uIEZyaSwgTm92IDIyLCAyMDE5IGF0IDExOjM2IEFN IE1pa2EgV2VzdGVyYmVyZwo+IDxtaWthLndlc3RlcmJlcmdAaW50ZWwuY29tPiB3cm90ZToKPiA+ Cj4gPiBPbiBUaHUsIE5vdiAyMSwgMjAxOSBhdCAxMTozOToyM1BNICswMTAwLCBSYWZhZWwgSi4g V3lzb2NraSB3cm90ZToKPiA+ID4gT24gVGh1LCBOb3YgMjEsIDIwMTkgYXQgODo0OSBQTSBNaWth IFdlc3RlcmJlcmcKPiA+ID4gPG1pa2Eud2VzdGVyYmVyZ0BpbnRlbC5jb20+IHdyb3RlOgo+ID4g PiA+Cj4gPiA+ID4gT24gVGh1LCBOb3YgMjEsIDIwMTkgYXQgMDQ6NDM6MjRQTSArMDEwMCwgUmFm YWVsIEouIFd5c29ja2kgd3JvdGU6Cj4gPiA+ID4gPiBPbiBUaHUsIE5vdiAyMSwgMjAxOSBhdCAx OjUyIFBNIE1pa2EgV2VzdGVyYmVyZwo+ID4gPiA+ID4gPG1pa2Eud2VzdGVyYmVyZ0BpbnRlbC5j b20+IHdyb3RlOgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBPbiBUaHUsIE5vdiAyMSwgMjAxOSBh dCAwMTo0NjoxNFBNICswMjAwLCBNaWthIFdlc3RlcmJlcmcgd3JvdGU6Cj4gPiA+ID4gPiA+ID4g T24gVGh1LCBOb3YgMjEsIDIwMTkgYXQgMTI6MzQ6MjJQTSArMDEwMCwgUmFmYWVsIEouIFd5c29j a2kgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiBPbiBUaHUsIE5vdiAyMSwgMjAxOSBhdCAxMjoyOCBQ TSBNaWthIFdlc3RlcmJlcmcKPiA+ID4gPiA+ID4gPiA+IDxtaWthLndlc3RlcmJlcmdAaW50ZWwu Y29tPiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gT24gV2VkLCBO b3YgMjAsIDIwMTkgYXQgMTE6Mjk6MzNQTSArMDEwMCwgUmFmYWVsIEouIFd5c29ja2kgd3JvdGU6 Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBsYXN0IHdlZWsgb3Igc28gSSBmb3VuZCBzeXN0ZW1zIHdo ZXJlIHRoZSBHUFUgd2FzIHVuZGVyIHRoZSAiUENJCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBFeHBy ZXNzIFJvb3QgUG9ydCIgKG5hbWUgZnJvbSBsc3BjaSkgYW5kIG9uIHRob3NlIHN5c3RlbXMgYWxs IG9mIHRoYXQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHNlZW1zIHRvIHdvcmsuIFNvIEkgYW0gd29u ZGVyaW5nIGlmIGl0J3MgaW5kZWVkIGp1c3QgdGhlIDB4MTkwMSBvbmUsCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiB3aGljaCBhbHNvIGV4cGxhaW5zIE1pa2FzIGNhc2UgdGhhdCBUaHVuZGVyYm9sdCBz dHVmZiB3b3JrcyBhcyBkZXZpY2VzCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBuZXZlciBnZXQgcG9w dWxhdGVkIHVuZGVyIHRoaXMgcGFydGljdWxhciBicmlkZ2UgY29udHJvbGxlciwgYnV0IHVuZGVy Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiB0aG9zZSAiUm9vdCBQb3J0InMKPiA+ID4gPiA+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IEl0IGFsd2F5cyBpcyBhIFBDSWUgcG9ydCwgYnV0IGl0 cyBsb2NhdGlvbiB3aXRoaW4gdGhlIFNvQyBtYXkgbWF0dGVyLgo+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPiBFeGFjdGx5LiBJbnRlbCBoYXJkd2FyZSBoYXMgUENJZSBwb3J0cyBv biBDUFUgc2lkZSAodGhlc2UgYXJlIGNhbGxlZAo+ID4gPiA+ID4gPiA+ID4gPiBQRUcsIFBDSSBF eHByZXNzIEdyYXBoaWNzLCBwb3J0cyksIGFuZCB0aGUgUENIIHNpZGUuIEkgdGhpbmsgdGhlIElQ IGlzCj4gPiA+ID4gPiA+ID4gPiA+IHN0aWxsIHRoZSBzYW1lLgo+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPiA+IEFsc28gc29tZSBjdXN0b20gQU1MLWJhc2VkIHBvd2VyIG1hbmFn ZW1lbnQgaXMgaW52b2x2ZWQgYW5kIHRoYXQgbWF5Cj4gPiA+ID4gPiA+ID4gPiA+ID4gYmUgbWFr aW5nIHNwZWNpZmljIGFzc3VtcHRpb25zIG9uIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBTb0Mg YW5kIHRoZQo+ID4gPiA+ID4gPiA+ID4gPiA+IEdQVSBhdCB0aGUgdGltZSBvZiBpdHMgaW52b2Nh dGlvbiB3aGljaCB1bmZvcnR1bmF0ZWx5IGFyZSBub3Qga25vd24gdG8KPiA+ID4gPiA+ID4gPiA+ ID4gPiB1cy4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IEhvd2V2ZXIs IGl0IGxvb2tzIGxpa2UgdGhlIEFNTCBpbnZva2VkIHRvIHBvd2VyIGRvd24gdGhlIEdQVSBmcm9t Cj4gPiA+ID4gPiA+ID4gPiA+ID4gYWNwaV9wY2lfc2V0X3Bvd2VyX3N0YXRlKCkgZ2V0cyBjb25m dXNlZCBpZiBpdCBpcyBub3QgaW4gUENJIEQwIGF0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gdGhhdCBw b2ludCwgc28gaXQgbG9va3MgbGlrZSB0aGF0IEFNTCB0cmllcyB0byBhY2Nlc3MgZGV2aWNlIG1l bW9yeSBvbgo+ID4gPiA+ID4gPiA+ID4gPiA+IHRoZSBHUFUgKGJleW9uZCB0aGUgUENJIGNvbmZp ZyBzcGFjZSkgb3Igc2ltaWxhciB3aGljaCBpcyBub3QKPiA+ID4gPiA+ID4gPiA+ID4gPiBhY2Nl c3NpYmxlIGluIFBDSSBwb3dlciBzdGF0ZXMgYmVsb3cgRDAuCj4gPiA+ID4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ID4gPiA+IE9yIHRoZSBQQ0kgY29uZmlnIHNwYWNlIG9mIHRoZSBHUFUgd2hlbiB0 aGUgcGFyZW50IHJvb3QgcG9ydCBpcyBpbiBEM2hvdAo+ID4gPiA+ID4gPiA+ID4gPiAoYXMgaXQg aXMgdGhlIGNhc2UgaGVyZSkuIEFsc28gdGhlbiB0aGUgR1BVIGNvbmZpZyBzcGFjZSBpcyBub3QK PiA+ID4gPiA+ID4gPiA+ID4gYWNjZXNzaWJsZS4KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gPiBXaHkgd291bGQgdGhlIHBhcmVudCBwb3J0IGJlIGluIEQzaG90IGF0IHRoYXQgcG9pbnQ/ ICBXb3VsZG4ndCB0aGF0IGJlCj4gPiA+ID4gPiA+ID4gPiBhIHN1c3BlbmQgb3JkZXJpbmcgdmlv bGF0aW9uPwo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gTm8uIFdlIHB1dCB0aGUgR1BVIGlu dG8gRDNob3QgZmlyc3QsCj4gPiA+ID4gPgo+ID4gPiA+ID4gT0sKPiA+ID4gPiA+Cj4gPiA+ID4g PiBEb2VzIHRoaXMgaW52b2x2ZSBhbnkgQU1MLCBsaWtlIGEgX1BTMyB1bmRlciB0aGUgR1BVIG9i amVjdD8KPiA+ID4gPgo+ID4gPiA+IEkgZG9uJ3Qgc2VlIF9QUzMgKG5vciBfUFMwKSBmb3IgdGhh dCBvYmplY3QuIElmIEkgcmVhZCBpdCByaWdodCB0aGUgR1BVCj4gPiA+ID4gaXRzZWxmIGlzIG5v dCBkZXNjcmliZWQgaW4gQUNQSSB0YWJsZXMgYXQgYWxsLgo+ID4gPgo+ID4gPiBPSwo+ID4gPgo+ ID4gPiA+ID4gPiA+IHRoZW4gdGhlIHJvb3QgcG9ydCBhbmQgdGhlbiB0dXJuCj4gPiA+ID4gPiA+ ID4gb2ZmIHRoZSBwb3dlciByZXNvdXJjZSAod2hpY2ggaXMgYXR0YWNoZWQgdG8gdGhlIHJvb3Qg cG9ydCkgcmVzdWx0aW5nCj4gPiA+ID4gPiA+ID4gdGhlIHRvcG9sb2d5IGVudGVyaW5nIEQzY29s ZC4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSSBkb24ndCBzZWUgdGhhdCBoYXBwZW5pbmcgaW4g dGhlIEFNTCB0aG91Z2guCj4gPiA+ID4gPgo+ID4gPiA+ID4gV2hpY2ggQU1MIGRvIHlvdSBtZWFu LCBzcGVjaWZpY2FsbHk/ICBUaGUgX09GRiBtZXRob2QgZm9yIHRoZSByb290Cj4gPiA+ID4gPiBw b3J0J3MgX1BSMyBwb3dlciByZXNvdXJjZSBvciBzb21ldGhpbmcgZWxzZT8KPiA+ID4gPgo+ID4g PiA+IFRoZSByb290IHBvcnQncyBfT0ZGIG1ldGhvZCBmb3IgdGhlIHBvd2VyIHJlc291cmNlIHJl dHVybmVkIGJ5IGl0cyBfUFIzLgo+ID4gPgo+ID4gPiBPSywgc28gd2l0aG91dCB0aGUgJHN1Ympl Y3QgcGF0Y2ggd2UgKDEpIHByb2dyYW0gdGhlIGRvd25zdHJlYW0KPiA+ID4gY29tcG9uZW50IChH UFUpIGludG8gRDNob3QsIHRoZW4gd2UgKDIpIHByb2dyYW0gdGhlIHBvcnQgaG9sZGluZyBpdAo+ ID4gPiBpbnRvIEQzaG90IGFuZCB0aGVuIHdlICgzKSBsZXQgdGhlIEFNTCAoX09GRiBmb3IgdGhl IHBvd2VyIHJlc291cmNlCj4gPiA+IGxpc3RlZCBieSBfUFIzIHVuZGVyIHRoZSBwb3J0IG9iamVj dCkgcnVuLgo+ID4gPgo+ID4gPiBTb21ldGhpbmcgc3RyYW5nZSBoYXBwZW5zIGF0IHRoaXMgcG9p bnQgKGFuZCBJIGd1ZXNzIHRoYXQgX09GRiBkb2Vzbid0Cj4gPiA+IGV2ZW4gcmVhY2ggdGhlIHBv aW50IHdoZXJlIGl0IHJlbW92ZXMgcG93ZXIgZnJvbSB0aGUgcG9ydCB3aGljaCBpcyB3aHkKPiA+ ID4gd2Ugc2VlIGEgbG9jay11cCkuCj4gPgo+ID4gSXQgZG9lcyBub3QgbmVjZXNzYXJ5IGxlYWQg dG8gbG9jay11cC4gSGVyZSBpcyBkbWVzZyBmcm9tIEthcm9sJ3MKPiA+IHN5c3RlbToKPiA+Cj4g PiAgIGh0dHBzOi8vZ2lzdC5naXRodWJ1c2VyY29udGVudC5jb20va2Fyb2xoZXJic3QvNDBlYjA5 MWM3YjdiMzNlZjk5MzUyNWRlNjYwZjFhM2IvcmF3LzIzODBlMzFmNTY2ZTkzZTViYTdjODdlZjU0 NTQyMDk2NWQ0YzQ5MmMvZ2lzdGZpbGUxLnR4dAo+ID4KPiA+IHdoYXQgc2VlbXMgdG8gaGFwcGVu IGlzIHRoYXQgdGhlIEdQVSBuZXZlciAiY29tZXMgYmFjayIgZnJvbSBEM2NvbGQgc28KPiA+IHRo ZSBkcml2ZXIgc3RhcnRzIGJyZWFraW5nIGFwYXJ0IGFzIHRoZSBoYXJkd2FyZSBpcyBnb25lIG5v dy4KPgo+IEkgbWVhbnQgYSBsb2NrLXVwIGluIGhhcmR3YXJlIHRvIGJlIHByZWNpc2UsIHRoYXQg Y2F1c2VzIGl0IHRvIHN0b3AgdG8KPiByZXNwb25kICh3aGljaCBjYXVzZXMgaXQgdG8gYXBwZWFy IHRvIGJlIHBlcm1hbmVudGx5IGluIEQzY29sZCkuCj4KPiBJIHdvbmRlciBpZiB0aGUgcG9ydCBh Y2NlcHRzIFBDSSBjb25maWcgc3BhY2Ugd3JpdGVzIHRoZW4uCj4KCnRoZSBpc3N1ZSBpcyBub3Qg QU1MIHJlbGF0ZWQgYXQgYWxsIGFzIEkgYW0gYWJsZSB0byByZXByb2R1Y2UgdGhpcwppc3N1ZSB3 aXRob3V0IGhhdmluZyB0byBpbnZva2UgYW55IG9mIHRoYXQgYXQgYWxsLCBJIGp1c3QgbmVlZCB0 byBwb2tlCmludG8gdGhlIFBDSSByZWdpc3RlciBkaXJlY3RseSB0byBjdXQgdGhlIHBvd2VyLiBU aGUgcmVnaXN0ZXIgaXMgbm90CmRvY3VtZW50ZWQsIGJ1dCBlZmZlY3RpdmVseSB3aGF0IHRoZSBB TUwgY29kZSBpcyB3cml0aW5nIHRvIGFzIHdlbGwuCk9mIGNvdXJzZSBpdCBtaWdodCBhbHNvIGJl IHRoYXQgdGhlIGNvZGUgSSB3YXMgdGVzdGluZyBpdCB3YXMgZG9pbmcKdGhpbmdzIGluIGEgbm9u IGNvbmZvcm1hbnQgd2F5IGFuZCBJIGp1c3QgaGl0IGEgZGlmZmVyZW50IGlzc3VlIGFzCndlbGws IGJ1dCBpbiB0aGUgZW5kIEkgZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQU1MIGNvZGUgaXMgdGhlIHJv b3QgY2F1c2UKb2YgYWxsIG9mIHRoYXQuCgo+ID4gPiBXZSBrbm93IHRoYXQgc2tpcHBpbmcgKDEp IG1ha2VzIHRoaW5ncyB3b3JrIGFuZCB3ZSBraW5kIG9mIHN1c3BlY3QKPiA+ID4gdGhhdCBza2lw cGluZyAoMykgd291bGQgbWFrZSB0aGluZ3Mgd29yayBlaXRoZXIsIGJ1dCB3aGF0IGFib3V0IGRv aW5nCj4gPiA+ICgxKSBhbmQgKDMpIHdpdGhvdXQgKDIpPwo+ID4KPiA+IFlvdSBtZWFuIGluIHRo aXMgcGFydGljdWxhciBjYXNlIG9yIGluIGdlbmVyYWw/Cj4KPiBJbiB0aGlzIGNhc2UgaW4gcGFy dGljdWxhciB0byBzdGFydCB3aXRoLiAgSnVzdCBkbyBhbiBleHBlcmltZW50IHRvCj4gc2VlIHdo YXQgaGFwcGVucyBpZiB3ZSBza2lwIHBjaV9yYXdfc2V0X3Bvd2VyX3N0YXRlKCkgZm9yIHRoZSBw b3J0Cj4gaW5zdGVhZCBvZiBza2lwcGluZyBpdCBmb3IgdGhlIGRvd25zdHJlYW0gZGV2aWNlLgo+ Cj4gPiBCZWNhdXNlIGlmIHRoZSBwb3J0IGhhcyBfUFN4IG1ldGhvZHMgd2UgbmVlZCB0byBwdXQg aXQgaW50byBEM2hvdCBBRkFJSy4KPgo+IFllcywgd2UgbmVlZCB0byBydW4gX1BTMyB0aGVuLCBi dXQgbWF5YmUgd2UgZG9uJ3QgbmVlZCB0byB3cml0ZSB0byBpdHMKPiBQTUNTUiBkaXJlY3RseS4K Pgo+ID4gPiA+ID4gPiBCYXNpY2FsbHkgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCB3aGVuIFdpbmRv d3MgNyBvciBMaW51eCAodGhlIF9SRVY9PTUKPiA+ID4gPiA+ID4gY2hlY2spIHRoZW4gd2UgZGly ZWN0bHkgZG8gbGluayBkaXNhYmxlIHdoZXJlYXMgaW4gV2luZG93cyA4KyB3ZSBpbnZva2UKPiA+ ID4gPiA+ID4gTEtEUygpIG1ldGhvZCB0aGF0IHB1dHMgdGhlIGxpbmsgaW50byBMMi9MMy4gTm9u ZSBvZiB0aGUgZmllbGRzIHRoZXkKPiA+ID4gPiA+ID4gYWNjZXNzIHNlZW0gdG8gdG91Y2ggdGhl IEdQVSBpdHNlbGYuCj4gPiA+ID4gPgo+ID4gPiA+ID4gU28gdGhhdCBtYXkgYmUgd2hlcmUgdGhl IHByb2JsZW0gaXMuCj4gPiA+ID4gPgo+ID4gPiA+ID4gUHV0dGluZyB0aGUgZG93bnN0cmVhbSBj b21wb25lbnQgaW50byBQQ0kgRFsxLTNdIGlzIGV4cGVjdGVkIHRvIHB1dAo+ID4gPiA+ID4gdGhl IGxpbmsgaW50byBMMSwgc28gSSdtIG5vdCBzdXJlIGhvdyB0aGF0IHBsYXlzIHdpdGggdGhlIGxh dGVyCj4gPiA+ID4gPiBhdHRlbXB0IHRvIHB1dCBpdCBpbnRvIEwyL0wzIFJlYWR5Lgo+ID4gPiA+ Cj4gPiA+ID4gVGhhdCBzaG91bGQgYmUgZmluZS4gV2hhdCBJJ3ZlIHNlZW4gdGhlIGxpbmsgZ29l cyBpbnRvIEwxIHdoZW4KPiA+ID4gPiBkb3duc3RyZWFtIGNvbXBvbmVudCBpcyBwdXQgdG8gRC1z dGF0ZSAobm90IEQwKSBhbmQgdGhlbiBpdCBpcyBwdXQgYmFjawo+ID4gPiA+IHRvIEwwIHdoZW4g TDIvMyByZWFkeSBpcyBwcm9wYWdhdGVkLiBFdmVudHVhbGx5IGl0IGdvZXMgaW50byBMMiBvciBM My4KPiA+ID4KPiA+ID4gV2VsbCwgdGhhdCdzIHRoZSBleHBlY3RlZCBiZWhhdmlvciwgYnV0IHRo ZSBvYnNlcnZlZCBiZWhhdmlvciBpc24ndCBhcwo+ID4gPiBleHBlY3RlZC4gOi0pCj4gPgo+ID4g UmlnaHQgOikKPiA+Cj4gPiA+ID4gPiBBbHNvLCBMMi9MMyBSZWFkeSBpcyBleHBlY3RlZCB0byBi ZSB0cmFuc2llbnQsIHNvIGZpbmFsbHkgcG93ZXIgc2hvdWxkCj4gPiA+ID4gPiBiZSByZW1vdmVk IHNvbWVob3cuCj4gPiA+ID4KPiA+ID4gPiBUaGVyZSBpcyBHUElPIGZvciBib3RoIHBvd2VyIGFu ZCBQRVJTVCwgSSB0aGluayB0aGUgbGluZSBoZXJlOgo+ID4gPiA+Cj4gPiA+ID4gICBcX1NCLlNH T1YgKDB4MDEwMTAwMDQsIFplcm8pCj4gPiA+ID4KPiA+ID4gPiBpcyB0aGUgb25lIHRoYXQgcmVt b3ZlcyBwb3dlci4KPiA+ID4KPiA+ID4gT0sKPiA+ID4KPiA+ID4gPiA+ID4gTEtEUygpIGZvciB0 aGUgZmlyc3QgUEVHIHBvcnQgbG9va3MgbGlrZSB0aGlzOgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiAgICBQMEwyID0gT25lCj4gPiA+ID4gPiA+ICAgIFNsZWVwICgweDEwKQo+ID4gPiA+ID4gPiAg ICBMb2NhbDAgPSBaZXJvCj4gPiA+ID4gPiA+ICAgIFdoaWxlIChQMEwyKQo+ID4gPiA+ID4gPiAg ICB7Cj4gPiA+ID4gPiA+ICAgICAgICAgSWYgKChMb2NhbDAgPiAweDA0KSkKPiA+ID4gPiA+ID4g ICAgICAgICB7Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgIEJyZWFrCj4gPiA+ID4gPiA+ICAgICAg ICAgfQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgICAgICAgIFNsZWVwICgweDEwKQo+ID4gPiA+ ID4gPiAgICAgICAgIExvY2FsMCsrCj4gPiA+ID4gPiA+ICAgIH0KPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gT25lIHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCBpcyB0aGF0IHRoZSBsb29wIGNhbiBl bmQgZXZlbiBpZiBQMEwyIGlzCj4gPiA+ID4gPiA+IG5vdCBjbGVhcmVkIGFzIGl0IGRvZXMgb25s eSA1IGl0ZXJhdGlvbnMgd2l0aCAxNiBtcyBzbGVlcCBiZXR3ZWVuLiBNYXliZQo+ID4gPiA+ID4g PiBTbGVlcCgpIGlzIGltcGxlbWVudGVkIGRpZmZlcmVudGx5IGluIFdpbmRvd3M/IEkgbWVhbiBM aW51eCBtYXkgYmUKPiA+ID4gPiA+ID4gImZhc3RlciIgaGVyZSBhbmQgcmV0dXJuIHByZW1hdHVy ZWx5IGFuZCBpZiB3ZSBsZWF2ZSB0aGUgcG9ydCBpbnRvIEQwCj4gPiA+ID4gPiA+IHRoaXMgZG9l cyBub3QgaGFwcGVuLCBvciBzb21ldGhpbmcuIEknbSBqdXN0IHRocm93aW5nIG91dCBpZGVhcyA6 KQo+ID4gPiA+ID4KPiA+ID4gPiA+IEJ1dCB0aGlzIGFjdHVhbGx5IHdvcmtzIGZvciB0aGUgZG93 bnN0cmVhbSBjb21wb25lbnQgaW4gRDAsIGRvZXNuJ3QgaXQ/Cj4gPiA+ID4KPiA+ID4gPiBJdCBk b2VzIGFuZCB0aGF0IGxlYXZlcyB0aGUgbGluayBpbiBMMCBzbyBpdCBjb3VsZCBiZSB0aGF0IHRo ZW4gdGhlCj4gPiA+ID4gYWJvdmUgQU1MIHdvcmtzIGJldHRlciBvciBzb21ldGhpbmcuCj4gPiA+ Cj4gPiA+IFRoYXQgd291bGQgYmUgbXkgZ3Vlc3MuCj4gPiA+Cj4gPiA+ID4gVGhhdCByZW1pbmRz IG1lLCBBU1BNIG1heSBoYXZlIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoaXMgYXMgd2VsbC4KPiA+ ID4KPiA+ID4gTm90IHJlYWxseSBpZiBELXN0YXRlcyBhcmUgaW52b2x2ZWQuCj4gPiA+Cj4gPiA+ ID4gPiBBbHNvLCBpZiB0aGUgZG93bnN0cmVhbSBjb21wb25lbnQgaXMgaW4gRDAsIHRoZSBwb3J0 IGFjdHVhbGx5IHNob3VsZAo+ID4gPiA+ID4gc3RheSBpbiBEMCB0b28sIHNvIHdoYXQgd291bGQg aGFwcGVuIHdpdGggdGhlICRzdWJqZWN0IHBhdGNoIGFwcGxpZWQ/Cj4gPiA+ID4KPiA+ID4gPiBQ YXJlbnQgcG9ydCBjYW5ub3QgYmUgbG93ZXIgRC1zdGF0ZSB0aGFuIHRoZSBjaGlsZCBzbyBJIGFn cmVlIGl0IHNob3VsZAo+ID4gPiA+IHN0YXkgaW4gRDAgYXMgd2VsbC4gSG93ZXZlciwgaXQgc2Vl bXMgdGhhdCB3aGF0IGhhcHBlbnMgaXMgdGhhdCB0aGUKPiA+ID4gPiBpc3N1ZSBnb2VzIGF3YXkg OikKPiA+ID4KPiA+ID4gV2VsbCwgYXQgbGVhc3QgdGhpcyBpcyBraW5kIG9mIG91dCBvZiB0aGUg c3BlYy4KPiA+ID4KPiA+ID4gTm90ZSB0aGF0IHBjaV9wbV9zdXNwZW5kX25vaXJxKCkgd29uJ3Qg bGV0IHRoZSBwb3J0IGdvIGludG8gRDMgaWYgdGhlCj4gPiA+IGRvd25zdHJlYW0gZGV2aWNlIGlz IGluIEQwLCBzbyB0aGUgJHN1YmplY3QgcGF0Y2ggd2lsbCBub3Qgd29yayBhcwo+ID4gPiBleHBl Y3RlZCBpbiB0aGUgc3VzcGVuZC10by1pZGxlIGNhc2UuCj4gPiA+Cj4gPiA+IEFsc28gd2UgcmVh bGx5IHNob3VsZCBtYWtlIHVwIG91ciBtaW5kcyBvbiB3aGV0aGVyIG9yIG5vdCB0byBmb3JjZQo+ ID4gPiBQQ0llIHBvcnRzIHRvIHN0YXkgaW4gRDAgd2hlbiBkb3duc3RyZWFtIGRldmljZXMgYXJl IGluIEQwIGFuZCBiZQo+ID4gPiBjb25zZXF1ZW50IGFib3V0IHRoYXQuICBSaWdodCBub3cgd2Ug ZG8gb25lIHRoaW5nIGR1cmluZyBzeXN0ZW0td2lkZQo+ID4gPiBzdXNwZW5kIGFuZCB0aGUgb3Ro ZXIgb25lIGluIFBNLXJ1bnRpbWUsIHdoaWNoIGlzIGNvbmZ1c2luZy4KPiA+ID4KPiA+ID4gVGhl IGN1cnJlbnQgZGVzaWduIGlzIG1vc3RseSBiYXNlZCBvbiB0aGUgUENJIFBNIFNwZWMgMS4yLCBz byBpdCB3b3VsZAo+ID4gPiBiZSBjb25zZXF1ZW50IHRvIGZvbGxvdyBzeXN0ZW0td2lkZSBzdXNw ZW5kIGluIFBNLXJ1bnRpbWUgYW5kIGF2b2lkCj4gPiA+IHB1dHRpbmcgUENJZSBwb3J0cyBob2xk aW5nIGRldmljZXMgaW4gRDAgaW50byBhbnkgbG93LXBvd2VyIHN0YXRlcy4KPiA+ID4gYnV0IHRo YXQgd291bGQgbWFrZSB0aGUgYXBwcm9hY2ggaW4gdGhlICRzdWJqZWN0IHBhdGNoIGluZWZmZWN0 aXZlLgo+ID4gPgo+ID4gPiBNb3Jlb3ZlciwgdGhlIGZhY3QgdGhhdCB0aGVyZSBhcmUgc2VwYXJh dGUgYnJhbmNoZXMgZm9yICJXaW5kb3dzIDciCj4gPiA+IGFuZCAiV2luZG93cyA4KyIga2luZCBv ZiBzdWdnZXN0IGEgY2hhbmdlIGluIHRoZSBleHBlY3RlZCBiZWhhdmlvcgo+ID4gPiBiZXR3ZWVu IFdpbmRvd3MgNyBhbmQgV2luZG93cyA4LCBmcm9tIHRoZSBBTUwgcGVyc3BlY3RpdmUuICBJIHdv dWxkCj4gPiA+IGd1ZXNzIHRoYXQgV2luZG93cyA3IGZvbGxvd2VkIFBDSSBQTSAxLjIgYW5kIFdp bmRvd3MgOCAoYW5kIGxhdGVyKQo+ID4gPiBkb2VzIHNvbWV0aGluZyBlbHNlLgo+ID4KPiA+IE15 IHVuZGVyc3RhbmRpbmcgKHdoaWNoIG1heSBub3QgYmUgY29ycmVjdCkgaXMgdGhhdCB1cCB0byBX aW5kb3dzIDcgaXQKPiA+IG5ldmVyIHB1dCB0aGUgZGV2aWNlcyBpbnRvIEQzY29sZCBydW50aW1l LiBPbmx5IHdoZW4gdGhlIHN5c3RlbSBlbnRlcmVkCj4gPiBTeCBzdGF0ZXMgaXQgZXZhbHVhdGVk IHRoZSBfT0ZGIG1ldGhvZHMuCj4KPiBJIHNlZS4KPgo+ID4gU3RhcnRpbmcgZnJvbSBXaW5kb3dz IDggaXQgc3RhcnRlZCBkb2luZyB0aGlzIHJ1bnRpbWUgc28gZGV2aWNlcyBjYW4KPiA+IGVudGVy IEQzY29sZCBldmVuIHdoZW4gc3lzdGVtIGlzIGluIFMwLgo+Cj4gSG1tLiAgU28gYnkgc2V0dGlu ZyBfUkVWIHRvIDUgd2UgZWZmZWN0aXZlbHkgY2hhbmdlIHRoZSBfT0ZGIGludG8gYSBOT1A/Cj4K PiA+ID4gTm93LCB0aGUgc3RydWN0dXJlIG9mIHRoZSAiV2luZG93cyA4KyIgYnJhbmNoCj4gPiA+ IGRlc2NyaWJlZCBieSB5b3Ugc3VnZ2VzdHMgdGhhdCwgYXQgbGVhc3QgaW4gdGhlIGNhc2VzIHdo ZW4gaXQgaXMgZ29pbmcKPiA+ID4gdG8gcmVtb3ZlIHBvd2VyIGZyb20gdGhlIHBvcnQgZXZlbnR1 YWxseSwgaXQgZ29lcyBzdHJhaWdodCBmb3IgdGhlCj4gPiA+IGxpbmsgcHJlcGFyYXRpb24gKHRo ZSBMMi9MMyBSZWFkeSB0cmFuc2l0aW9uKSBhbmQgcG93ZXIgcmVtb3ZhbAo+ID4gPiB3aXRob3V0 IGJvdGhlcmluZyB0byBwcm9ncmFtIHRoZSBkb3duc3RyZWFtIGRldmljZSBhbmQgcG9ydCBpbnRv IEQzaG90Cj4gPiA+IChiZWNhdXNlIHRoYXQncyBraW5kIG9mIHJlZHVuZGFudCkuCj4gPiA+Cj4g PiA+IFRoYXQgaHlwb3RoZXRpY2FsICJXaW5kb3dzIDgrIiBhcHByb2FjaCBtYXkgcmVhbGx5IHdv cmsgdW5pdmVyc2FsbHksCj4gPiA+IGJlY2F1c2UgaXQgZG9lc24ndCBzZWVtIHRvIGJyZWFrIGFu eSBydWxlcyAoZ29pbmcgc3RyYWlnaHQgZnJvbSBEMCB0bwo+ID4gPiBEM2NvbGQgaXMgbm90IGRp c2FsbG93ZWQgYW5kIGRvaW5nIHRoYXQgZm9yIGJvdGggYSBwb3J0IGFuZCBhCj4gPiA+IGRvd25z dHJlYW0gZGV2aWNlIGF0IHRoZSBzYW1lIHRpbWUgaXMga2luZCBvZiBPSyBlaXRoZXIsIGFzIGxv bmcgYXMKPiA+ID4gdGhlIGxpbmsgaXMgcmVhZHkgZm9yIHRoYXQpLgo+ID4KPiA+IEkgZ3Vlc3Mg aXQgZGVwZW5kcyBvbiBob3cgeW91IGludGVycHJldCB0aGUgc3BlY3MgOy0pIEZyb20gUENJZSA1 LjAgc2VjCj4gPiA1Ljggd2UgY2FuIHNlZSB0aGUgc3VwcG9ydGVkIFBNIHN0YXRlIHRyYW5zaXRp b25zIGFuZCBpdCBzaG93cyB0aGF0IHlvdQo+ID4gZ2V0IHRvIEQzY29sZCB0aHJvdWdoIEQzaG90 LiBPZiBjb3Vyc2UgdGhlIGRldmljZSBnb2VzIGludG8gRDNjb2xkIGlmCj4gPiB5b3Ugc2ltcGx5 IHJlbW92ZSBpdHMgcG93ZXIgc28gSSBhZ3JlZSB3aXRoIHlvdSBhcyB3ZWxsLiBIb3dldmVyLCBp Zgo+ID4gdGhlcmUgaXMgX1BTMyBtZXRob2Qgd2UgY2FuJ3Qgc2tpcCB0aGUgRDNob3QgcGhhc2Uu Cj4KPiBUaGF0J3MgbXkgdW5kZXJzdGFuZGluZyB0b28sIGJ1dCBJJ20gd29uZGVyaW5nIGFib3V0 IGRpcmVjdCBQTUNTUgo+IHdyaXRlcy4gIEl0IGlzIHVuY2xlYXIgdG8gbWUgaWYgdGhleSBhcmUg bmVjZXNzYXJ5LCBvciBtb3JlIHByZWNpc2VseSwKPiB3aGV0aGVyIG9yIG5vdCBXaW5kb3dzIDEw LCBzYXksIGNhcnJpZXMgdGhlbSBvdXQgaWYgQUNQSSBQTSBpcyBnb2luZwo+IHRvIGJlIGFwcGxp ZWQuCj4KPiBNYXliZSBJJ20gZ29pbmcgdG9vIGZhciB3aXRoIG15IGNvbmNsdXNpb25zLCBidXQg cGxlYXNlIGxldCBtZSBrbm93Cj4gd2hhdCB5b3UgdGhpbmsgYWJvdXQgdGhlIGFwcHJvYWNoIHBy b3Bvc2VkIGF0IHRoZSBlbmQgb2YKPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1wbS9D QUpaNXYwaVF0dEdCNG01VGJ6Q3RqcDJDMWo1cUVrVWhxaHBXYisrTGhTazNtYlc9THdAbWFpbC5n bWFpbC5jb20vVC8jdAo+ID8KPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KTm91dmVhdSBtYWlsaW5nIGxpc3QKTm91dmVhdUBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9ub3V2 ZWF1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3DE89C432C3 for ; Fri, 22 Nov 2019 11:34:54 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1CE8A20679 for ; Fri, 22 Nov 2019 11:34:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1CE8A20679 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AE93F6F532; Fri, 22 Nov 2019 11:34:52 +0000 (UTC) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6EEC56F52B for ; Fri, 22 Nov 2019 11:34:51 +0000 (UTC) Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-322-tM1QgbFHNgeyKKCp5GhcPw-1; Fri, 22 Nov 2019 06:34:46 -0500 Received: by mail-qt1-f197.google.com with SMTP id l8so4443586qtq.9 for ; Fri, 22 Nov 2019 03:34:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=iBfpklGhPRhrYly17NTSIYzOWKMZdLqNlgCmkwaLRhc=; b=ijuRVm+OTNoWS/5kWaDHQhVlxlnlxzQzOsClARWtUppUDrVbUHRb2NX6B4VeokiOcW u2v39hcjAGgH3qZP7bpdP7z8HzUSn2v/yh/lUZcfXV/o3GQODqXK1vZWwUyQbTrwOWDL z/C8GDmzPETHl9ZEupDT1FJw69JiKRN7yRt576DSnw9oN+NjTlEvoog4oL6NPydJbRBT F+0jeLbHZtCdXuCzvGEYuAJxEAY/QeqbNx/UT5lSsDQPXDMuUwVjFgzpiypRUQL1dU9b Q8BbtsrxrcbLPHbwJpy1UZP5UVsW6ze9Eeu2pVAV1Ncjc2MWby2EwiOKNt7rOD7cimAt asyQ== X-Gm-Message-State: APjAAAUidiYAMvn8BjjIbXlQLZSSrO4wHkPxXH2Nwads6gAE0ksv8x+9 Z/YVgUwXT9SMh7tyl8Al29DxZSZhEbYzMjwY/TfvwBCsnCZuL367+l56tChuCeqna84md2OdThu BcQCZwkpM2hXCOB0iFOjjvl8vO6krBGwuH0Qd4ZtzGvrm X-Received: by 2002:aed:2ae7:: with SMTP id t94mr1549758qtd.130.1574422486328; Fri, 22 Nov 2019 03:34:46 -0800 (PST) X-Google-Smtp-Source: APXvYqwMkBxx6DSKZ005gn43Xcdt6eYIcz0G2xMHhijsoBwYi4p4KVNTeDrJzhN7eeIyuxwarewT7usIYpIHUagzd5M= X-Received: by 2002:aed:2ae7:: with SMTP id t94mr1549730qtd.130.1574422485923; Fri, 22 Nov 2019 03:34:45 -0800 (PST) MIME-Version: 1.0 References: <20191121112821.GU11621@lahna.fi.intel.com> <20191121114610.GW11621@lahna.fi.intel.com> <20191121125236.GX11621@lahna.fi.intel.com> <20191121194942.GY11621@lahna.fi.intel.com> <20191122103637.GA11621@lahna.fi.intel.com> In-Reply-To: From: Karol Herbst Date: Fri, 22 Nov 2019 12:34:34 +0100 Message-ID: Subject: Re: [PATCH v4] pci: prevent putting nvidia GPUs into lower device states on certain intel bridges To: "Rafael J. Wysocki" X-MC-Unique: tM1QgbFHNgeyKKCp5GhcPw-1 X-Mimecast-Spam-Score: 0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1574422490; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gIfSwOUY/v0QVfMKoqi+Vk2CDkjSRq7n4XLxIb64jks=; b=gsTBOkIYW+6IdUD40PqzzL+kYrm49/kSt+T8L+3uwZFu3HBt8JBtW3zhwntwFdWJRURVaC JNXHTjjQ3GnbXEYQ5uwQh1h75cJ1r2XV4BtYN0PgiXIHvlEsxPu5hoAMGcS5PXUrq6CT5g bpneb/4WHiGst/08j12P4CbCfL8Wi1o= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Linux PM , Linux PCI , Mika Westerberg , Mario Limonciello , "Rafael J . Wysocki" , LKML , dri-devel , Bjorn Helgaas , nouveau Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191122113434.0JAJ_4kLmbFs-o8feoPzDnJg-IMEGbghKTOUr7VPsJo@z> T24gRnJpLCBOb3YgMjIsIDIwMTkgYXQgMTI6MzAgUE0gUmFmYWVsIEouIFd5c29ja2kgPHJhZmFl bEBrZXJuZWwub3JnPiB3cm90ZToKPgo+IE9uIEZyaSwgTm92IDIyLCAyMDE5IGF0IDExOjM2IEFN IE1pa2EgV2VzdGVyYmVyZwo+IDxtaWthLndlc3RlcmJlcmdAaW50ZWwuY29tPiB3cm90ZToKPiA+ Cj4gPiBPbiBUaHUsIE5vdiAyMSwgMjAxOSBhdCAxMTozOToyM1BNICswMTAwLCBSYWZhZWwgSi4g V3lzb2NraSB3cm90ZToKPiA+ID4gT24gVGh1LCBOb3YgMjEsIDIwMTkgYXQgODo0OSBQTSBNaWth IFdlc3RlcmJlcmcKPiA+ID4gPG1pa2Eud2VzdGVyYmVyZ0BpbnRlbC5jb20+IHdyb3RlOgo+ID4g PiA+Cj4gPiA+ID4gT24gVGh1LCBOb3YgMjEsIDIwMTkgYXQgMDQ6NDM6MjRQTSArMDEwMCwgUmFm YWVsIEouIFd5c29ja2kgd3JvdGU6Cj4gPiA+ID4gPiBPbiBUaHUsIE5vdiAyMSwgMjAxOSBhdCAx OjUyIFBNIE1pa2EgV2VzdGVyYmVyZwo+ID4gPiA+ID4gPG1pa2Eud2VzdGVyYmVyZ0BpbnRlbC5j b20+IHdyb3RlOgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBPbiBUaHUsIE5vdiAyMSwgMjAxOSBh dCAwMTo0NjoxNFBNICswMjAwLCBNaWthIFdlc3RlcmJlcmcgd3JvdGU6Cj4gPiA+ID4gPiA+ID4g T24gVGh1LCBOb3YgMjEsIDIwMTkgYXQgMTI6MzQ6MjJQTSArMDEwMCwgUmFmYWVsIEouIFd5c29j a2kgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiBPbiBUaHUsIE5vdiAyMSwgMjAxOSBhdCAxMjoyOCBQ TSBNaWthIFdlc3RlcmJlcmcKPiA+ID4gPiA+ID4gPiA+IDxtaWthLndlc3RlcmJlcmdAaW50ZWwu Y29tPiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gT24gV2VkLCBO b3YgMjAsIDIwMTkgYXQgMTE6Mjk6MzNQTSArMDEwMCwgUmFmYWVsIEouIFd5c29ja2kgd3JvdGU6 Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBsYXN0IHdlZWsgb3Igc28gSSBmb3VuZCBzeXN0ZW1zIHdo ZXJlIHRoZSBHUFUgd2FzIHVuZGVyIHRoZSAiUENJCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBFeHBy ZXNzIFJvb3QgUG9ydCIgKG5hbWUgZnJvbSBsc3BjaSkgYW5kIG9uIHRob3NlIHN5c3RlbXMgYWxs IG9mIHRoYXQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHNlZW1zIHRvIHdvcmsuIFNvIEkgYW0gd29u ZGVyaW5nIGlmIGl0J3MgaW5kZWVkIGp1c3QgdGhlIDB4MTkwMSBvbmUsCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiB3aGljaCBhbHNvIGV4cGxhaW5zIE1pa2FzIGNhc2UgdGhhdCBUaHVuZGVyYm9sdCBz dHVmZiB3b3JrcyBhcyBkZXZpY2VzCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBuZXZlciBnZXQgcG9w dWxhdGVkIHVuZGVyIHRoaXMgcGFydGljdWxhciBicmlkZ2UgY29udHJvbGxlciwgYnV0IHVuZGVy Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiB0aG9zZSAiUm9vdCBQb3J0InMKPiA+ID4gPiA+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IEl0IGFsd2F5cyBpcyBhIFBDSWUgcG9ydCwgYnV0IGl0 cyBsb2NhdGlvbiB3aXRoaW4gdGhlIFNvQyBtYXkgbWF0dGVyLgo+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPiBFeGFjdGx5LiBJbnRlbCBoYXJkd2FyZSBoYXMgUENJZSBwb3J0cyBv biBDUFUgc2lkZSAodGhlc2UgYXJlIGNhbGxlZAo+ID4gPiA+ID4gPiA+ID4gPiBQRUcsIFBDSSBF eHByZXNzIEdyYXBoaWNzLCBwb3J0cyksIGFuZCB0aGUgUENIIHNpZGUuIEkgdGhpbmsgdGhlIElQ IGlzCj4gPiA+ID4gPiA+ID4gPiA+IHN0aWxsIHRoZSBzYW1lLgo+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPiA+IEFsc28gc29tZSBjdXN0b20gQU1MLWJhc2VkIHBvd2VyIG1hbmFn ZW1lbnQgaXMgaW52b2x2ZWQgYW5kIHRoYXQgbWF5Cj4gPiA+ID4gPiA+ID4gPiA+ID4gYmUgbWFr aW5nIHNwZWNpZmljIGFzc3VtcHRpb25zIG9uIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBTb0Mg YW5kIHRoZQo+ID4gPiA+ID4gPiA+ID4gPiA+IEdQVSBhdCB0aGUgdGltZSBvZiBpdHMgaW52b2Nh dGlvbiB3aGljaCB1bmZvcnR1bmF0ZWx5IGFyZSBub3Qga25vd24gdG8KPiA+ID4gPiA+ID4gPiA+ ID4gPiB1cy4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IEhvd2V2ZXIs IGl0IGxvb2tzIGxpa2UgdGhlIEFNTCBpbnZva2VkIHRvIHBvd2VyIGRvd24gdGhlIEdQVSBmcm9t Cj4gPiA+ID4gPiA+ID4gPiA+ID4gYWNwaV9wY2lfc2V0X3Bvd2VyX3N0YXRlKCkgZ2V0cyBjb25m dXNlZCBpZiBpdCBpcyBub3QgaW4gUENJIEQwIGF0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gdGhhdCBw b2ludCwgc28gaXQgbG9va3MgbGlrZSB0aGF0IEFNTCB0cmllcyB0byBhY2Nlc3MgZGV2aWNlIG1l bW9yeSBvbgo+ID4gPiA+ID4gPiA+ID4gPiA+IHRoZSBHUFUgKGJleW9uZCB0aGUgUENJIGNvbmZp ZyBzcGFjZSkgb3Igc2ltaWxhciB3aGljaCBpcyBub3QKPiA+ID4gPiA+ID4gPiA+ID4gPiBhY2Nl c3NpYmxlIGluIFBDSSBwb3dlciBzdGF0ZXMgYmVsb3cgRDAuCj4gPiA+ID4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ID4gPiA+IE9yIHRoZSBQQ0kgY29uZmlnIHNwYWNlIG9mIHRoZSBHUFUgd2hlbiB0 aGUgcGFyZW50IHJvb3QgcG9ydCBpcyBpbiBEM2hvdAo+ID4gPiA+ID4gPiA+ID4gPiAoYXMgaXQg aXMgdGhlIGNhc2UgaGVyZSkuIEFsc28gdGhlbiB0aGUgR1BVIGNvbmZpZyBzcGFjZSBpcyBub3QK PiA+ID4gPiA+ID4gPiA+ID4gYWNjZXNzaWJsZS4KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gPiBXaHkgd291bGQgdGhlIHBhcmVudCBwb3J0IGJlIGluIEQzaG90IGF0IHRoYXQgcG9pbnQ/ ICBXb3VsZG4ndCB0aGF0IGJlCj4gPiA+ID4gPiA+ID4gPiBhIHN1c3BlbmQgb3JkZXJpbmcgdmlv bGF0aW9uPwo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gTm8uIFdlIHB1dCB0aGUgR1BVIGlu dG8gRDNob3QgZmlyc3QsCj4gPiA+ID4gPgo+ID4gPiA+ID4gT0sKPiA+ID4gPiA+Cj4gPiA+ID4g PiBEb2VzIHRoaXMgaW52b2x2ZSBhbnkgQU1MLCBsaWtlIGEgX1BTMyB1bmRlciB0aGUgR1BVIG9i amVjdD8KPiA+ID4gPgo+ID4gPiA+IEkgZG9uJ3Qgc2VlIF9QUzMgKG5vciBfUFMwKSBmb3IgdGhh dCBvYmplY3QuIElmIEkgcmVhZCBpdCByaWdodCB0aGUgR1BVCj4gPiA+ID4gaXRzZWxmIGlzIG5v dCBkZXNjcmliZWQgaW4gQUNQSSB0YWJsZXMgYXQgYWxsLgo+ID4gPgo+ID4gPiBPSwo+ID4gPgo+ ID4gPiA+ID4gPiA+IHRoZW4gdGhlIHJvb3QgcG9ydCBhbmQgdGhlbiB0dXJuCj4gPiA+ID4gPiA+ ID4gb2ZmIHRoZSBwb3dlciByZXNvdXJjZSAod2hpY2ggaXMgYXR0YWNoZWQgdG8gdGhlIHJvb3Qg cG9ydCkgcmVzdWx0aW5nCj4gPiA+ID4gPiA+ID4gdGhlIHRvcG9sb2d5IGVudGVyaW5nIEQzY29s ZC4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSSBkb24ndCBzZWUgdGhhdCBoYXBwZW5pbmcgaW4g dGhlIEFNTCB0aG91Z2guCj4gPiA+ID4gPgo+ID4gPiA+ID4gV2hpY2ggQU1MIGRvIHlvdSBtZWFu LCBzcGVjaWZpY2FsbHk/ICBUaGUgX09GRiBtZXRob2QgZm9yIHRoZSByb290Cj4gPiA+ID4gPiBw b3J0J3MgX1BSMyBwb3dlciByZXNvdXJjZSBvciBzb21ldGhpbmcgZWxzZT8KPiA+ID4gPgo+ID4g PiA+IFRoZSByb290IHBvcnQncyBfT0ZGIG1ldGhvZCBmb3IgdGhlIHBvd2VyIHJlc291cmNlIHJl dHVybmVkIGJ5IGl0cyBfUFIzLgo+ID4gPgo+ID4gPiBPSywgc28gd2l0aG91dCB0aGUgJHN1Ympl Y3QgcGF0Y2ggd2UgKDEpIHByb2dyYW0gdGhlIGRvd25zdHJlYW0KPiA+ID4gY29tcG9uZW50IChH UFUpIGludG8gRDNob3QsIHRoZW4gd2UgKDIpIHByb2dyYW0gdGhlIHBvcnQgaG9sZGluZyBpdAo+ ID4gPiBpbnRvIEQzaG90IGFuZCB0aGVuIHdlICgzKSBsZXQgdGhlIEFNTCAoX09GRiBmb3IgdGhl IHBvd2VyIHJlc291cmNlCj4gPiA+IGxpc3RlZCBieSBfUFIzIHVuZGVyIHRoZSBwb3J0IG9iamVj dCkgcnVuLgo+ID4gPgo+ID4gPiBTb21ldGhpbmcgc3RyYW5nZSBoYXBwZW5zIGF0IHRoaXMgcG9p bnQgKGFuZCBJIGd1ZXNzIHRoYXQgX09GRiBkb2Vzbid0Cj4gPiA+IGV2ZW4gcmVhY2ggdGhlIHBv aW50IHdoZXJlIGl0IHJlbW92ZXMgcG93ZXIgZnJvbSB0aGUgcG9ydCB3aGljaCBpcyB3aHkKPiA+ ID4gd2Ugc2VlIGEgbG9jay11cCkuCj4gPgo+ID4gSXQgZG9lcyBub3QgbmVjZXNzYXJ5IGxlYWQg dG8gbG9jay11cC4gSGVyZSBpcyBkbWVzZyBmcm9tIEthcm9sJ3MKPiA+IHN5c3RlbToKPiA+Cj4g PiAgIGh0dHBzOi8vZ2lzdC5naXRodWJ1c2VyY29udGVudC5jb20va2Fyb2xoZXJic3QvNDBlYjA5 MWM3YjdiMzNlZjk5MzUyNWRlNjYwZjFhM2IvcmF3LzIzODBlMzFmNTY2ZTkzZTViYTdjODdlZjU0 NTQyMDk2NWQ0YzQ5MmMvZ2lzdGZpbGUxLnR4dAo+ID4KPiA+IHdoYXQgc2VlbXMgdG8gaGFwcGVu IGlzIHRoYXQgdGhlIEdQVSBuZXZlciAiY29tZXMgYmFjayIgZnJvbSBEM2NvbGQgc28KPiA+IHRo ZSBkcml2ZXIgc3RhcnRzIGJyZWFraW5nIGFwYXJ0IGFzIHRoZSBoYXJkd2FyZSBpcyBnb25lIG5v dy4KPgo+IEkgbWVhbnQgYSBsb2NrLXVwIGluIGhhcmR3YXJlIHRvIGJlIHByZWNpc2UsIHRoYXQg Y2F1c2VzIGl0IHRvIHN0b3AgdG8KPiByZXNwb25kICh3aGljaCBjYXVzZXMgaXQgdG8gYXBwZWFy IHRvIGJlIHBlcm1hbmVudGx5IGluIEQzY29sZCkuCj4KPiBJIHdvbmRlciBpZiB0aGUgcG9ydCBh Y2NlcHRzIFBDSSBjb25maWcgc3BhY2Ugd3JpdGVzIHRoZW4uCj4KCnRoZSBpc3N1ZSBpcyBub3Qg QU1MIHJlbGF0ZWQgYXQgYWxsIGFzIEkgYW0gYWJsZSB0byByZXByb2R1Y2UgdGhpcwppc3N1ZSB3 aXRob3V0IGhhdmluZyB0byBpbnZva2UgYW55IG9mIHRoYXQgYXQgYWxsLCBJIGp1c3QgbmVlZCB0 byBwb2tlCmludG8gdGhlIFBDSSByZWdpc3RlciBkaXJlY3RseSB0byBjdXQgdGhlIHBvd2VyLiBU aGUgcmVnaXN0ZXIgaXMgbm90CmRvY3VtZW50ZWQsIGJ1dCBlZmZlY3RpdmVseSB3aGF0IHRoZSBB TUwgY29kZSBpcyB3cml0aW5nIHRvIGFzIHdlbGwuCk9mIGNvdXJzZSBpdCBtaWdodCBhbHNvIGJl IHRoYXQgdGhlIGNvZGUgSSB3YXMgdGVzdGluZyBpdCB3YXMgZG9pbmcKdGhpbmdzIGluIGEgbm9u IGNvbmZvcm1hbnQgd2F5IGFuZCBJIGp1c3QgaGl0IGEgZGlmZmVyZW50IGlzc3VlIGFzCndlbGws IGJ1dCBpbiB0aGUgZW5kIEkgZG9uJ3QgdGhpbmsgdGhhdCB0aGUgQU1MIGNvZGUgaXMgdGhlIHJv b3QgY2F1c2UKb2YgYWxsIG9mIHRoYXQuCgo+ID4gPiBXZSBrbm93IHRoYXQgc2tpcHBpbmcgKDEp IG1ha2VzIHRoaW5ncyB3b3JrIGFuZCB3ZSBraW5kIG9mIHN1c3BlY3QKPiA+ID4gdGhhdCBza2lw cGluZyAoMykgd291bGQgbWFrZSB0aGluZ3Mgd29yayBlaXRoZXIsIGJ1dCB3aGF0IGFib3V0IGRv aW5nCj4gPiA+ICgxKSBhbmQgKDMpIHdpdGhvdXQgKDIpPwo+ID4KPiA+IFlvdSBtZWFuIGluIHRo aXMgcGFydGljdWxhciBjYXNlIG9yIGluIGdlbmVyYWw/Cj4KPiBJbiB0aGlzIGNhc2UgaW4gcGFy dGljdWxhciB0byBzdGFydCB3aXRoLiAgSnVzdCBkbyBhbiBleHBlcmltZW50IHRvCj4gc2VlIHdo YXQgaGFwcGVucyBpZiB3ZSBza2lwIHBjaV9yYXdfc2V0X3Bvd2VyX3N0YXRlKCkgZm9yIHRoZSBw b3J0Cj4gaW5zdGVhZCBvZiBza2lwcGluZyBpdCBmb3IgdGhlIGRvd25zdHJlYW0gZGV2aWNlLgo+ Cj4gPiBCZWNhdXNlIGlmIHRoZSBwb3J0IGhhcyBfUFN4IG1ldGhvZHMgd2UgbmVlZCB0byBwdXQg aXQgaW50byBEM2hvdCBBRkFJSy4KPgo+IFllcywgd2UgbmVlZCB0byBydW4gX1BTMyB0aGVuLCBi dXQgbWF5YmUgd2UgZG9uJ3QgbmVlZCB0byB3cml0ZSB0byBpdHMKPiBQTUNTUiBkaXJlY3RseS4K Pgo+ID4gPiA+ID4gPiBCYXNpY2FsbHkgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCB3aGVuIFdpbmRv d3MgNyBvciBMaW51eCAodGhlIF9SRVY9PTUKPiA+ID4gPiA+ID4gY2hlY2spIHRoZW4gd2UgZGly ZWN0bHkgZG8gbGluayBkaXNhYmxlIHdoZXJlYXMgaW4gV2luZG93cyA4KyB3ZSBpbnZva2UKPiA+ ID4gPiA+ID4gTEtEUygpIG1ldGhvZCB0aGF0IHB1dHMgdGhlIGxpbmsgaW50byBMMi9MMy4gTm9u ZSBvZiB0aGUgZmllbGRzIHRoZXkKPiA+ID4gPiA+ID4gYWNjZXNzIHNlZW0gdG8gdG91Y2ggdGhl IEdQVSBpdHNlbGYuCj4gPiA+ID4gPgo+ID4gPiA+ID4gU28gdGhhdCBtYXkgYmUgd2hlcmUgdGhl IHByb2JsZW0gaXMuCj4gPiA+ID4gPgo+ID4gPiA+ID4gUHV0dGluZyB0aGUgZG93bnN0cmVhbSBj b21wb25lbnQgaW50byBQQ0kgRFsxLTNdIGlzIGV4cGVjdGVkIHRvIHB1dAo+ID4gPiA+ID4gdGhl IGxpbmsgaW50byBMMSwgc28gSSdtIG5vdCBzdXJlIGhvdyB0aGF0IHBsYXlzIHdpdGggdGhlIGxh dGVyCj4gPiA+ID4gPiBhdHRlbXB0IHRvIHB1dCBpdCBpbnRvIEwyL0wzIFJlYWR5Lgo+ID4gPiA+ Cj4gPiA+ID4gVGhhdCBzaG91bGQgYmUgZmluZS4gV2hhdCBJJ3ZlIHNlZW4gdGhlIGxpbmsgZ29l cyBpbnRvIEwxIHdoZW4KPiA+ID4gPiBkb3duc3RyZWFtIGNvbXBvbmVudCBpcyBwdXQgdG8gRC1z dGF0ZSAobm90IEQwKSBhbmQgdGhlbiBpdCBpcyBwdXQgYmFjawo+ID4gPiA+IHRvIEwwIHdoZW4g TDIvMyByZWFkeSBpcyBwcm9wYWdhdGVkLiBFdmVudHVhbGx5IGl0IGdvZXMgaW50byBMMiBvciBM My4KPiA+ID4KPiA+ID4gV2VsbCwgdGhhdCdzIHRoZSBleHBlY3RlZCBiZWhhdmlvciwgYnV0IHRo ZSBvYnNlcnZlZCBiZWhhdmlvciBpc24ndCBhcwo+ID4gPiBleHBlY3RlZC4gOi0pCj4gPgo+ID4g UmlnaHQgOikKPiA+Cj4gPiA+ID4gPiBBbHNvLCBMMi9MMyBSZWFkeSBpcyBleHBlY3RlZCB0byBi ZSB0cmFuc2llbnQsIHNvIGZpbmFsbHkgcG93ZXIgc2hvdWxkCj4gPiA+ID4gPiBiZSByZW1vdmVk IHNvbWVob3cuCj4gPiA+ID4KPiA+ID4gPiBUaGVyZSBpcyBHUElPIGZvciBib3RoIHBvd2VyIGFu ZCBQRVJTVCwgSSB0aGluayB0aGUgbGluZSBoZXJlOgo+ID4gPiA+Cj4gPiA+ID4gICBcX1NCLlNH T1YgKDB4MDEwMTAwMDQsIFplcm8pCj4gPiA+ID4KPiA+ID4gPiBpcyB0aGUgb25lIHRoYXQgcmVt b3ZlcyBwb3dlci4KPiA+ID4KPiA+ID4gT0sKPiA+ID4KPiA+ID4gPiA+ID4gTEtEUygpIGZvciB0 aGUgZmlyc3QgUEVHIHBvcnQgbG9va3MgbGlrZSB0aGlzOgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiAgICBQMEwyID0gT25lCj4gPiA+ID4gPiA+ICAgIFNsZWVwICgweDEwKQo+ID4gPiA+ID4gPiAg ICBMb2NhbDAgPSBaZXJvCj4gPiA+ID4gPiA+ICAgIFdoaWxlIChQMEwyKQo+ID4gPiA+ID4gPiAg ICB7Cj4gPiA+ID4gPiA+ICAgICAgICAgSWYgKChMb2NhbDAgPiAweDA0KSkKPiA+ID4gPiA+ID4g ICAgICAgICB7Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgIEJyZWFrCj4gPiA+ID4gPiA+ICAgICAg ICAgfQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgICAgICAgIFNsZWVwICgweDEwKQo+ID4gPiA+ ID4gPiAgICAgICAgIExvY2FsMCsrCj4gPiA+ID4gPiA+ICAgIH0KPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gT25lIHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCBpcyB0aGF0IHRoZSBsb29wIGNhbiBl bmQgZXZlbiBpZiBQMEwyIGlzCj4gPiA+ID4gPiA+IG5vdCBjbGVhcmVkIGFzIGl0IGRvZXMgb25s eSA1IGl0ZXJhdGlvbnMgd2l0aCAxNiBtcyBzbGVlcCBiZXR3ZWVuLiBNYXliZQo+ID4gPiA+ID4g PiBTbGVlcCgpIGlzIGltcGxlbWVudGVkIGRpZmZlcmVudGx5IGluIFdpbmRvd3M/IEkgbWVhbiBM aW51eCBtYXkgYmUKPiA+ID4gPiA+ID4gImZhc3RlciIgaGVyZSBhbmQgcmV0dXJuIHByZW1hdHVy ZWx5IGFuZCBpZiB3ZSBsZWF2ZSB0aGUgcG9ydCBpbnRvIEQwCj4gPiA+ID4gPiA+IHRoaXMgZG9l cyBub3QgaGFwcGVuLCBvciBzb21ldGhpbmcuIEknbSBqdXN0IHRocm93aW5nIG91dCBpZGVhcyA6 KQo+ID4gPiA+ID4KPiA+ID4gPiA+IEJ1dCB0aGlzIGFjdHVhbGx5IHdvcmtzIGZvciB0aGUgZG93 bnN0cmVhbSBjb21wb25lbnQgaW4gRDAsIGRvZXNuJ3QgaXQ/Cj4gPiA+ID4KPiA+ID4gPiBJdCBk b2VzIGFuZCB0aGF0IGxlYXZlcyB0aGUgbGluayBpbiBMMCBzbyBpdCBjb3VsZCBiZSB0aGF0IHRo ZW4gdGhlCj4gPiA+ID4gYWJvdmUgQU1MIHdvcmtzIGJldHRlciBvciBzb21ldGhpbmcuCj4gPiA+ Cj4gPiA+IFRoYXQgd291bGQgYmUgbXkgZ3Vlc3MuCj4gPiA+Cj4gPiA+ID4gVGhhdCByZW1pbmRz IG1lLCBBU1BNIG1heSBoYXZlIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoaXMgYXMgd2VsbC4KPiA+ ID4KPiA+ID4gTm90IHJlYWxseSBpZiBELXN0YXRlcyBhcmUgaW52b2x2ZWQuCj4gPiA+Cj4gPiA+ ID4gPiBBbHNvLCBpZiB0aGUgZG93bnN0cmVhbSBjb21wb25lbnQgaXMgaW4gRDAsIHRoZSBwb3J0 IGFjdHVhbGx5IHNob3VsZAo+ID4gPiA+ID4gc3RheSBpbiBEMCB0b28sIHNvIHdoYXQgd291bGQg aGFwcGVuIHdpdGggdGhlICRzdWJqZWN0IHBhdGNoIGFwcGxpZWQ/Cj4gPiA+ID4KPiA+ID4gPiBQ YXJlbnQgcG9ydCBjYW5ub3QgYmUgbG93ZXIgRC1zdGF0ZSB0aGFuIHRoZSBjaGlsZCBzbyBJIGFn cmVlIGl0IHNob3VsZAo+ID4gPiA+IHN0YXkgaW4gRDAgYXMgd2VsbC4gSG93ZXZlciwgaXQgc2Vl bXMgdGhhdCB3aGF0IGhhcHBlbnMgaXMgdGhhdCB0aGUKPiA+ID4gPiBpc3N1ZSBnb2VzIGF3YXkg OikKPiA+ID4KPiA+ID4gV2VsbCwgYXQgbGVhc3QgdGhpcyBpcyBraW5kIG9mIG91dCBvZiB0aGUg c3BlYy4KPiA+ID4KPiA+ID4gTm90ZSB0aGF0IHBjaV9wbV9zdXNwZW5kX25vaXJxKCkgd29uJ3Qg bGV0IHRoZSBwb3J0IGdvIGludG8gRDMgaWYgdGhlCj4gPiA+IGRvd25zdHJlYW0gZGV2aWNlIGlz IGluIEQwLCBzbyB0aGUgJHN1YmplY3QgcGF0Y2ggd2lsbCBub3Qgd29yayBhcwo+ID4gPiBleHBl Y3RlZCBpbiB0aGUgc3VzcGVuZC10by1pZGxlIGNhc2UuCj4gPiA+Cj4gPiA+IEFsc28gd2UgcmVh bGx5IHNob3VsZCBtYWtlIHVwIG91ciBtaW5kcyBvbiB3aGV0aGVyIG9yIG5vdCB0byBmb3JjZQo+ ID4gPiBQQ0llIHBvcnRzIHRvIHN0YXkgaW4gRDAgd2hlbiBkb3duc3RyZWFtIGRldmljZXMgYXJl IGluIEQwIGFuZCBiZQo+ID4gPiBjb25zZXF1ZW50IGFib3V0IHRoYXQuICBSaWdodCBub3cgd2Ug ZG8gb25lIHRoaW5nIGR1cmluZyBzeXN0ZW0td2lkZQo+ID4gPiBzdXNwZW5kIGFuZCB0aGUgb3Ro ZXIgb25lIGluIFBNLXJ1bnRpbWUsIHdoaWNoIGlzIGNvbmZ1c2luZy4KPiA+ID4KPiA+ID4gVGhl IGN1cnJlbnQgZGVzaWduIGlzIG1vc3RseSBiYXNlZCBvbiB0aGUgUENJIFBNIFNwZWMgMS4yLCBz byBpdCB3b3VsZAo+ID4gPiBiZSBjb25zZXF1ZW50IHRvIGZvbGxvdyBzeXN0ZW0td2lkZSBzdXNw ZW5kIGluIFBNLXJ1bnRpbWUgYW5kIGF2b2lkCj4gPiA+IHB1dHRpbmcgUENJZSBwb3J0cyBob2xk aW5nIGRldmljZXMgaW4gRDAgaW50byBhbnkgbG93LXBvd2VyIHN0YXRlcy4KPiA+ID4gYnV0IHRo YXQgd291bGQgbWFrZSB0aGUgYXBwcm9hY2ggaW4gdGhlICRzdWJqZWN0IHBhdGNoIGluZWZmZWN0 aXZlLgo+ID4gPgo+ID4gPiBNb3Jlb3ZlciwgdGhlIGZhY3QgdGhhdCB0aGVyZSBhcmUgc2VwYXJh dGUgYnJhbmNoZXMgZm9yICJXaW5kb3dzIDciCj4gPiA+IGFuZCAiV2luZG93cyA4KyIga2luZCBv ZiBzdWdnZXN0IGEgY2hhbmdlIGluIHRoZSBleHBlY3RlZCBiZWhhdmlvcgo+ID4gPiBiZXR3ZWVu IFdpbmRvd3MgNyBhbmQgV2luZG93cyA4LCBmcm9tIHRoZSBBTUwgcGVyc3BlY3RpdmUuICBJIHdv dWxkCj4gPiA+IGd1ZXNzIHRoYXQgV2luZG93cyA3IGZvbGxvd2VkIFBDSSBQTSAxLjIgYW5kIFdp bmRvd3MgOCAoYW5kIGxhdGVyKQo+ID4gPiBkb2VzIHNvbWV0aGluZyBlbHNlLgo+ID4KPiA+IE15 IHVuZGVyc3RhbmRpbmcgKHdoaWNoIG1heSBub3QgYmUgY29ycmVjdCkgaXMgdGhhdCB1cCB0byBX aW5kb3dzIDcgaXQKPiA+IG5ldmVyIHB1dCB0aGUgZGV2aWNlcyBpbnRvIEQzY29sZCBydW50aW1l LiBPbmx5IHdoZW4gdGhlIHN5c3RlbSBlbnRlcmVkCj4gPiBTeCBzdGF0ZXMgaXQgZXZhbHVhdGVk IHRoZSBfT0ZGIG1ldGhvZHMuCj4KPiBJIHNlZS4KPgo+ID4gU3RhcnRpbmcgZnJvbSBXaW5kb3dz IDggaXQgc3RhcnRlZCBkb2luZyB0aGlzIHJ1bnRpbWUgc28gZGV2aWNlcyBjYW4KPiA+IGVudGVy IEQzY29sZCBldmVuIHdoZW4gc3lzdGVtIGlzIGluIFMwLgo+Cj4gSG1tLiAgU28gYnkgc2V0dGlu ZyBfUkVWIHRvIDUgd2UgZWZmZWN0aXZlbHkgY2hhbmdlIHRoZSBfT0ZGIGludG8gYSBOT1A/Cj4K PiA+ID4gTm93LCB0aGUgc3RydWN0dXJlIG9mIHRoZSAiV2luZG93cyA4KyIgYnJhbmNoCj4gPiA+ IGRlc2NyaWJlZCBieSB5b3Ugc3VnZ2VzdHMgdGhhdCwgYXQgbGVhc3QgaW4gdGhlIGNhc2VzIHdo ZW4gaXQgaXMgZ29pbmcKPiA+ID4gdG8gcmVtb3ZlIHBvd2VyIGZyb20gdGhlIHBvcnQgZXZlbnR1 YWxseSwgaXQgZ29lcyBzdHJhaWdodCBmb3IgdGhlCj4gPiA+IGxpbmsgcHJlcGFyYXRpb24gKHRo ZSBMMi9MMyBSZWFkeSB0cmFuc2l0aW9uKSBhbmQgcG93ZXIgcmVtb3ZhbAo+ID4gPiB3aXRob3V0 IGJvdGhlcmluZyB0byBwcm9ncmFtIHRoZSBkb3duc3RyZWFtIGRldmljZSBhbmQgcG9ydCBpbnRv IEQzaG90Cj4gPiA+IChiZWNhdXNlIHRoYXQncyBraW5kIG9mIHJlZHVuZGFudCkuCj4gPiA+Cj4g PiA+IFRoYXQgaHlwb3RoZXRpY2FsICJXaW5kb3dzIDgrIiBhcHByb2FjaCBtYXkgcmVhbGx5IHdv cmsgdW5pdmVyc2FsbHksCj4gPiA+IGJlY2F1c2UgaXQgZG9lc24ndCBzZWVtIHRvIGJyZWFrIGFu eSBydWxlcyAoZ29pbmcgc3RyYWlnaHQgZnJvbSBEMCB0bwo+ID4gPiBEM2NvbGQgaXMgbm90IGRp c2FsbG93ZWQgYW5kIGRvaW5nIHRoYXQgZm9yIGJvdGggYSBwb3J0IGFuZCBhCj4gPiA+IGRvd25z dHJlYW0gZGV2aWNlIGF0IHRoZSBzYW1lIHRpbWUgaXMga2luZCBvZiBPSyBlaXRoZXIsIGFzIGxv bmcgYXMKPiA+ID4gdGhlIGxpbmsgaXMgcmVhZHkgZm9yIHRoYXQpLgo+ID4KPiA+IEkgZ3Vlc3Mg aXQgZGVwZW5kcyBvbiBob3cgeW91IGludGVycHJldCB0aGUgc3BlY3MgOy0pIEZyb20gUENJZSA1 LjAgc2VjCj4gPiA1Ljggd2UgY2FuIHNlZSB0aGUgc3VwcG9ydGVkIFBNIHN0YXRlIHRyYW5zaXRp b25zIGFuZCBpdCBzaG93cyB0aGF0IHlvdQo+ID4gZ2V0IHRvIEQzY29sZCB0aHJvdWdoIEQzaG90 LiBPZiBjb3Vyc2UgdGhlIGRldmljZSBnb2VzIGludG8gRDNjb2xkIGlmCj4gPiB5b3Ugc2ltcGx5 IHJlbW92ZSBpdHMgcG93ZXIgc28gSSBhZ3JlZSB3aXRoIHlvdSBhcyB3ZWxsLiBIb3dldmVyLCBp Zgo+ID4gdGhlcmUgaXMgX1BTMyBtZXRob2Qgd2UgY2FuJ3Qgc2tpcCB0aGUgRDNob3QgcGhhc2Uu Cj4KPiBUaGF0J3MgbXkgdW5kZXJzdGFuZGluZyB0b28sIGJ1dCBJJ20gd29uZGVyaW5nIGFib3V0 IGRpcmVjdCBQTUNTUgo+IHdyaXRlcy4gIEl0IGlzIHVuY2xlYXIgdG8gbWUgaWYgdGhleSBhcmUg bmVjZXNzYXJ5LCBvciBtb3JlIHByZWNpc2VseSwKPiB3aGV0aGVyIG9yIG5vdCBXaW5kb3dzIDEw LCBzYXksIGNhcnJpZXMgdGhlbSBvdXQgaWYgQUNQSSBQTSBpcyBnb2luZwo+IHRvIGJlIGFwcGxp ZWQuCj4KPiBNYXliZSBJJ20gZ29pbmcgdG9vIGZhciB3aXRoIG15IGNvbmNsdXNpb25zLCBidXQg cGxlYXNlIGxldCBtZSBrbm93Cj4gd2hhdCB5b3UgdGhpbmsgYWJvdXQgdGhlIGFwcHJvYWNoIHBy b3Bvc2VkIGF0IHRoZSBlbmQgb2YKPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1wbS9D QUpaNXYwaVF0dEdCNG01VGJ6Q3RqcDJDMWo1cUVrVWhxaHBXYisrTGhTazNtYlc9THdAbWFpbC5n bWFpbC5jb20vVC8jdAo+ID8KPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVs