From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 02/15] drm/i915: Embedded microcontroller (uC) firmware loading support Date: Mon, 6 Jul 2015 15:24:52 +0200 Message-ID: <20150706132452.GB2156@phenom.ffwll.local> References: <1434393394-21002-1-git-send-email-david.s.gordon@intel.com> <1434393394-21002-3-git-send-email-david.s.gordon@intel.com> <20150617120533.GR23637@phenom.ffwll.local> <5582B576.8050505@intel.com> <20150618144949.GD7752@phenom.ffwll.local> <5583D61F.7060104@intel.com> <20150624102916.GC25769@phenom.ffwll.local> <559A781A.3000601@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f43.google.com (mail-wg0-f43.google.com [74.125.82.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 913636E0DB for ; Mon, 6 Jul 2015 06:22:06 -0700 (PDT) Received: by wgck11 with SMTP id k11so140243092wgc.0 for ; Mon, 06 Jul 2015 06:22:05 -0700 (PDT) Content-Disposition: inline In-Reply-To: <559A781A.3000601@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Gordon Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdWwgMDYsIDIwMTUgYXQgMDE6NDQ6MTBQTSArMDEwMCwgRGF2ZSBHb3Jkb24gd3Jv dGU6Cj4gT24gMjQvMDYvMTUgMTE6MjksIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPk9uIEZyaSwg SnVuIDE5LCAyMDE1IGF0IDA5OjQzOjExQU0gKzAxMDAsIERhdmUgR29yZG9uIHdyb3RlOgo+ID4+ T24gMTgvMDYvMTUgMTU6NDksIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPj4+T24gVGh1LCBKdW4g MTgsIDIwMTUgYXQgMDE6MTE6MzRQTSArMDEwMCwgRGF2ZSBHb3Jkb24gd3JvdGU6Cj4gPj4+Pk9u IDE3LzA2LzE1IDEzOjA1LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+Pj4+T24gTW9uLCBKdW4g MTUsIDIwMTUgYXQgMDc6MzY6MjBQTSArMDEwMCwgRGF2ZSBHb3Jkb24gd3JvdGU6Cj4gPj4+Pj4+ Q3VycmVudCBkZXZpY2VzIG1heSBjb250YWluIG9uZSBvciBtb3JlIHByb2dyYW1tYWJsZSBtaWNy b2NvbnRyb2xsZXJzCj4gPj4+Pj4+dGhhdCBuZWVkIHRvIGhhdmUgYSBmaXJtd2FyZSBpbWFnZSAo YWthICJiaW5hcnkgYmxvYiIpIGxvYWRlZCBmcm9tIGFuCj4gPj4+Pj4+ZXh0ZXJuYWwgbWVkaXVt IGFuZCB0cmFuc2ZlcnJlZCB0byB0aGUgZGV2aWNlJ3MgbWVtb3J5Lgo+ID4+Pj4+Pgo+ID4+Pj4+ PlRoaXMgZmlsZSBwcm92aWRlcyBnZW5lcmljIHN1cHBvcnQgZnVuY3Rpb25zIGZvciBkb2luZyB0 aGlzOyB0aGV5IGNhbgo+ID4+Pj4+PnRoZW4gYmUgdXNlZCBieSBlYWNoIHVDLXNwZWNpZmljIGxv YWRlciwgdGh1cyByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uCj4gPj4+Pj4+YW5kIHRlc3Rpbmcg ZWZmb3J0Lgo+ID4+Pj4+Pgo+ID4+Pj4+PlNpZ25lZC1vZmYtYnk6IERhdmUgR29yZG9uIDxkYXZp ZC5zLmdvcmRvbkBpbnRlbC5jb20+Cj4gPj4+Pj4+U2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1 LmRhaUBpbnRlbC5jb20+Cj4gPj4+Pj4KPiA+Pj4+PkdpdmVuIHRoYXQgSSdtIGp1c3Qgc2hyZWRk aW5nIHRoZSBzeW5jaHJvbml6YXRpb24gdXNlZCBieSB0aGUgZG1jIGxvYWRlcgo+ID4+Pj4+SSdt IG5vdCBjb252aW5jZWQgdGhpcyBpcyBhIGdvb2QgaWRlYS4gQWJzdHJhY3Rpb24gaGFzIGNvc3Qs IGFuZCBhIGJpdCBvZgo+ID4+Pj4+Y29weS1wYXN0ZSBmb3Igc2ltaWxhciBzb3VuZGluZyBidXQg c2xpZ2h0bHkgZGlmZmVyZW50IHRoaW5ncyBkb2Vzbid0Cj4gPj4+Pj5zb3VuZCBhd2Z1bCB0byBt ZS4gQW5kIHRoZSBjcml0aWNhbCBiaXQgaW4gYWxsIHRoZSBmaXJtd2FyZSBsb2FkaW5nIEkndmUK PiA+Pj4+PnNlZW4gdGh1cyBmYXIgaXMgaW4gc3luY2hyb25pemluZyB0aGUgbG9hZGluZyB3aXRo IG90aGVyIG9wZXJhdGlvbnMsCj4gPj4+Pj5oaWRpbmcgdGhhdCBpc24ndCBhIGdvb2QgaWRlYS4g V29yc2UgaWYgd2UgZW5mb3JjZSBzdHVmZiBsaWtlIHJlcXVpcmluZwo+ID4+Pj4+ZGV2LT5zdHJ1 Y3RfbXV0ZXguCj4gPj4+Pj4tRGFuaWVsCj4gPj4+Pgo+ID4+Pj5JdCdzIHByZWNpc2VseSBiZWNh dXNlIGl0J3MgaW4gc29tZSBzZW5zZSAidHJpdmlhbC1idXQtdHJpY2t5IiB0aGF0IHdlCj4gPj4+ PnNob3VsZCB3cml0ZSBpdCBvbmNlLCBnZXQgaXQgcmlnaHQsIGFuZCB1c2UgaXQgZXZlcnl3aGVy ZS4gQ29weXBhc3RlCj4gPj4+Pi9kb2VzLyBzb3VuZCBhd2Z1bDsgSSd2ZSBzZWVuIGhvdyB0aGUg Y29kZSB0aGlzIHdhcyBkZXJpdmVkIGZyb20gaGFkCj4gPj4+PmFscmVhZHkgYmVlbiBjbG9uZWQg aW50byB0aHJlZSBmbGF2b3VycywgYWxsIGRpZmZlcmVudCBhbmQgYWxsIHdyb25nLgo+ID4+Pj4K PiA+Pj4+SXQncyBhIHZlcnkgc2ltcGxlIGFic3RyYWN0aW9uOiBvbmUgZWFybHkgY2FsbCB0byBr aWNrIHRoaW5ncyBvZmYgYXMKPiA+Pj4+ZWFybHkgYXMgcG9zc2libGUsIG5vIGxvY2tpbmcgcmVx dWlyZWQuIE9uZSBsYXRlIGNhbGwgd2l0aCB0aGUKPiA+Pj4+c3RydWN0X211dGV4IGhlbGQgdG8g Y29tcGxldGUgdGhlIHN5bmNocm9uaXNhdGlvbiBhbmQgYWN0dWFsbHkgZG8gdGhlCj4gPj4+Pndv cmssIHRodXMgZ3VhcmFudGVlaW5nIHRoYXQgdGhlIHRyYW5zZmVyIHRvIHRoZSB0YXJnZXQgdUMg aXMgZG9uZSBpbiBhCj4gPj4+PmNvbnRyb2xsZWQgZmFzaGlvbiwgYXQgYSB0aW1lIG9mIHRoZSBj YWxsZXIncyBjaG9pY2UsIGFuZCBieSB0aGUKPiA+Pj4+ZHJpdmVyJ3MgbWFpbmxpbmUgdGhyZWFk LCBOT1QgYnkgYW4gYXN5bmNocm9ub3VzIHRocmVhZCByYWNpbmcgd2l0aAo+ID4+Pj5vdGhlciBh Y3Rpdml0eSAod2hpY2ggd2FzIG9uZSBvZiB0aGUgdGhpbmdzIHdyb25nIHdpdGggdGhlIG9yaWdp bmFsCj4gPj4+PnZlcnNpb24pLgo+ID4+Pgo+ID4+PlllYWggSSd2ZSBzZWVuIHRoZSBvcmlnaW5z IG9mIHRoaXMgaW4gdGhlIGRpc3BsYXkgY29kZSwgYW5kIHRoYXQgY29kZSBnZXRzCj4gPj4+dGhl IHN5bmNpbmcgd3JvbmcuIFRoZSBvbmx5IHRoaW5nIHRoYXQgb25lIGhhcyBkbyB0byBpcyBncmFi IGEgcnVudGltZSBwbQo+ID4+PnJlZmVyZW5jZSBmb3IgdGhlIGFwcHJvcHJpYXRlIHBvd2VyIHdl bGwgdG8gcHJldmVudCBkYzUgZW50cnksIGFuZCByZWxlYXNlCj4gPj4+aXQgd2hlbiB0aGUgZmly bXdhcmUgaXMgbG9hZGVkIGFuZCBpbml0aWFsaXplZC4KPiA+Pgo+ID4+QWdyZWVkLgo+ID4+Cj4g Pj4+V2hpY2ggbWVhbnMgYW55IGtpbmQgb2YgZmlybXdhcmUgbG9hZGVyIHdoaWNoIHJlcXVpcmVz L3VzZXMKPiA+Pj5kZXYtPnN0cnVjdF9tdXRleCBnZXQgc3R1ZmYgd3JvbmcgYW5kIGlzIG5vdCBh cHByb3ByaWF0ZSBldmVyeXdoZXJlLgo+ID4+Cj4gPj5CVVQsIHRoZSBsb2FkaW5nIG9mIHRoZSBm aXJtd2FyZSBpbnRvIGFueSB1QyBNVVNUIGJlIGRvbmUgaW4gYQo+ID4+Y29udHJvbGxlZCBtYW5u ZXIgaS5lLiBhdCBhIHRpbWUgd2hlbiBubyBvdGhlciB0aHJlYWQgaXMgdG91Y2hpbmcgdGhlCj4g Pj5oL3cuIE90aGVyd2lzZSB0aGUgZi93IGxvYWQgYW5kIHdoYXRldmVyIGVsc2UgaXMgY29uY3Vy cmVudGx5IGFjY2Vzc2luZwo+ID4+dGhlIGgvdyBjb3VsZCBpbiBzb21lIGNhc2VzIGludGVyZmVy ZSBkaXNhc3Ryb3VzbHkuIEV4YW1wbGVzIG9mCj4gPj5pbnRlcmZlcmVuY2UgbWlnaHQgYmU6Cj4g Pj4KPiA+PiogaW50ZXJsZWF2ZWQgYWNjZXNzZXMgdG8gdGhlIEVMU1AgKGluIHRoZSBjYXNlIG9m IHRoZSBHdUMpCj4gPj4qIGluY29ycmVjdCBoYW5kb3ZlciBvZiBwb3dlciBtYW5hZ2VtZW50IChE TUMsIEd1QykKPiA+PiogZXJyb25lb3VzIG1hbmFnZW1lbnQgb2YgZm9yY2V3YWtlIHN0YXRlCj4g Pj4KPiA+PkluIGdlbmVyYWwgdGhlIGYvdyB0aGF0IGlzIGp1c3Qgc3RhcnRpbmcgb24gdGhlIHVD IG1heSBoYXZlIGNlcnRhaW4KPiA+PmV4cGVjdGF0aW9ucyBhYm91dCB0aGUgaW5pdGlhbCBzdGF0 ZSBvZiB0aGUgaC93LCB3aGljaCBtYXkgbm90IGJlIG1ldCBpZgo+ID4+b3RoZXIgdGhyZWFkcyBh cmUgYWNjZXNzaW5nIHZhcmlvdXMgYml0cyBvZiBoL3cgd2hpbGUgdGhlIHVDIGlzIGJvb3Rpbmcg dXAuCj4gPj4KPiA+PlNvIHdlIGFic29sdXRlbHkgbmVlZCB0byBndWFyYW50ZWUgdGhhdCB0aGUg Zi93IGxvYWQgaXMgZG9uZSBieSBhIHRocmVhZAo+ID4+d2hpY2ggaGFzIGV4Y2x1c2l2ZSBvd25l cnNoaXAgb2YgYW55IGJpdCBvZiB0aGUgaC93IHRoYXQgdGhlIGYvdyBpcwo+ID4+Z29pbmcgdG8g bWFrZSBhc3N1bXB0aW9ucyBhYm91dC4gV2l0aCB0aGUgY3VycmVudCBsb2NraW5nIHN0cnVjdHVy ZSBvZgo+ID4+dGhlIGRyaXZlciwgdGhhdCBtZWFucyBob2xkaW5nIHRoZSBzdHJ1Y3RfbXV0ZXgg KGl0IHNob3VsZG4ndCByZWFsbHksCj4gPj50aGVyZSBzaG91bGQgYmUgYSBzZXBhcmF0ZSBtdXRl eCBmb3IgaC93IHJlZ2lzdGVyIGFjY2VzcyB2cy4KPiA+PmRyaXZlci1wcml2YXRlIGRhdGEgc3Ry dWN0dXJlcywgYnV0IHRoZXJlIGlzbid0KS4KPiA+Cj4gPklmIHlvdSByZWFsbHkgbmVlZCB0aGlz IGd1YXJhbnRlZSAoYW5kIEkgc2VyaW91c2x5IGhvcGUgbm90KSB0aGVuIHRoZSBvbmx5Cj4gPm9w dGlvbiBpcyBhIHN5bmNocm9ub3VzIGZpcm13YXJlIGxvYWQgYXQgZHJpdmVyIGluaXQgX2JlZm9y ZV8gd2UgbGF1bmNoCj4gPmFueSBvZiB0aGUgYXN5bmNocm9ub3VzIHNldHVwIGNvZGUuIEFuZCB0 aGVyZSBpcyBhbHJlYWR5IGEgbG90IG9mIHRoYXQsCj4gPmFuZCB3ZSdyZSBhZGRpbmcgbW9yZSBh bGwgdGhlIHRpbWUuCj4gPgo+ID5XaGF0IEkgZXhwZWN0IHdlIG5lZWQgaXMgc3luY2hyb25pemF0 aW9uIG9mIGp1c3QgdGhlIHJldmVsYW50IHBhcnQgd2l0aAo+ID50aGUgZmlybXdhcmUgbG9hZGlu Zywgd2hpY2ggbmVjZXNzYXJpbHkgbmVlZHMgdG8gYmUgc29tZXdoYXQgYXN5bmMgdG8gYmUKPiA+ YWJsZSB0byBzdXBwb3J0IGNyb3MvYW5kcm9pZCByZXF1aXJlbWVudHMuIEFuZCB5ZXMgdGhhdCBu ZWVkcyB0byBiZSBkb25lCj4gPmluIGEgY29udHJvbGxlZCBtYW5uZXIsIGJ1dCBtb3N0IGxpa2Vs eSB3ZSBuZWVkIHZlcnkgc3BlY2lmaWMgc29sdXRpb25zCj4gPmZvciB0aGUgcHJvYmxlbSBhdCBo YW5kLiBVbmNvbmRpdGlvbmFsbHkgaG9sZGluZyBkZXYtPnN0cnVjdF9tdXRleCBpc24ndAo+ID50 aGF0IHNvbHV0aW9uLgo+ID4KPiA+VGhlIG90aGVyIHByb2JsZW0gd2l0aCBkZXYtPnN0cnVjdF9t dXRleCBpcyB0aGF0IGl0J3MgYSBnaWFudGljIGxvY2sgd2l0aAo+ID5pbGwgZGVmaW5lZCBjb3Zl cmFnZSBhbmQgc2VtYW50aWNzLiBJdCdzIGltbyB0aGUgYmlnZ2VzdCBwaWVjZSBvZgo+ID50ZWNo bmljYWwgZGVidCB3ZSBjYXJyeSBhcm91bmQgaW4gaTkxNS5rbywgYW5kIHdlIHBheSB0aGUgcHJp Y2UgZm9yIHRoYXQKPiA+ZGVhcmx5JmRhaWx5LiBXaGljaCBtZWFucyB0aGF0IHNpbmNlIGEgZmV3 IHllYXJzIGFueSBraW5kIG9mIGNvZGUKPiA+d2hpY2ggZXh0ZW5kZWQgZGV2LT5zdHJ1Y3RfbXV0 ZXggdG8gYW55dGhpbmcgbm90IGNsZWFybHkgY29yZSBnZW0gZGF0YQo+ID5zdHJ1Y3R1cmVzIHdh cyByZWplY3RlZC4KPiAKPiBPaCwgSSBxdWl0ZSBhZ3JlZSB0aGF0IHRoZSBzdHJ1Y3RfbXV0ZXgg aXMgYW4gYWJvbWluYXRpb24gYW5kIHdvdWxkCj4gY2VydGFpbmx5IGxpa2UgdG8gZWxpbWluYXRl IGl0LiBCdXQgYXQgdGhlIG1vbWVudCBpdCdzIHRoZSBvbmx5IHN1ZmZpY2llbnRseQo+IGxhcmdl LXNjYWxlIHN5bmNocm9uaXNhdGlvbiBvcGVyYXRpb24gYXZhaWxhYmxlIHRvIGVuc3VyZSB0aGF0 IChmb3IgZXhhbXBsZSkKPiB3ZSBkb24ndCB0cnkgdG8gbG9hZCB0aGUgZi93IGF0IHRoZSBzYW1l IHRpbWUgdGhhdCBhbm90aGVyIHRocmVhZCBpcyB0cnlpbmcKPiB0byByZXNldCB0aGUgaC93LgoK SSBndWVzcyB0aGlzIGlzIHRoZSBjcnV4IGhlcmUgLSBmb3IgbWUgcGFydCBvZiB0aGUgYmlnIHBy b2JsZW1zIGFyb3VuZApkZXYtPnN0cnVjdF9tdXRleCBpcyB0aGF0IGl0IGRvZXNuJ3QganVzdCBw cm90ZWN0IGRhdGEgc3RydWN0dXJlcyB0bwplbnN1cmUgdGhleSdyZSBjb25zaXN0ZW50LCBpdCBh bHNvIGludGVybWluZ2xlcyBhIGxvdCBvZiBsaWZldGltZSBydWxlcwooZS5nLiBob2xkaW5nIHN0 cnVjdF9tdXRleCBzeW5jaHJvbml6ZXMgYWdhaW5zdCBhbnkgZmluYWwgZ2VtIGJvIHVucmVmCnRv bykuIEFuZCBteSBleHBlcmllbmNlIGZyb20gZml4aW5nIHVwIGEgZmV3IGhvcnJpYmx5IG1pc2d1 aWRlZCBsb2NraW5nCmRlc2lnbnMgaW4gZHJtIHN1YnN5c3RlbSBpcyB0aGF0IGluIGdlbmVyYWwg dXNpbmcgbG9ja3MgdG8gZG8Kc3luY2hyb25pemF0aW9uIGxlYWRzIHRvIHNlcmlvdXMgbWFpbnRh aW5hbmNlIGhlYWRhY2hlcyBhIGZldyB5ZWFycyBkb3duCnRoZSByb2FkLiBTbyBpZiB5b3Ugc3Rh dGUgdGhhdCBvbmx5IHN0cnVjdF9tdXRleCBpcyBhIGJpZyBlbm91Z2ggbG9jayB0bwpzeW5jaHJv bml6ZSBhc3luYyBndWMgaW5pdCB0aGVuIHRoYXQga2lsbHMgeW91ciBkZXNpZ24gZm9yIG1lIGFs cmVhZHkuIFllcwp0aGVyZSdzIGEgZ3JleSBhcmVhIGxpa2UgYWx3YXlzIGluIGRlc2lnbiB0b3Bp Y3MsIGJ1dCBpZiBnaXZpbiBob3cgbWFzc2l2ZQooYW5kIG1hc3NpdmVseSB1bmRvY3VtZW50ZWQp IHN0cnVjdF9tdXRleCBpcyBJJ20gYWdhaW5zdCBnb2luZyBpbnRvIHRoYXQKZ3JleSBhcmVhIHdp dGggZXh0cmVtZSBwcmVqdWRpY2UuCgpJIGd1ZXNzIEkgbmVlZCB0byB3cml0ZSBhIHdoaXRlcGFw ZXIgb3Igc29tZXRoaW5nIGFib3V0IHRoaXMgKGl0J3MKY29tbW9ubHkgYWNjZXB0ZWQgd2lzZG9t IGluIHRoZSBkcm0gc3Vic3lzdGVtKSwgYnV0IHRoZSBzdW1tYXJ5IGlzCnJlbGF0aXZlIHNpbXBs ZTogRG9uJ3QgdXNlIGxvY2tzIHRvIGVuc3VyZSBvcmRlcmluZyBvZiBjb25jdXJyZW50Cm9wZXJh dGlvbnMgb3Igc29sdmUgbGlmZXRpbWUgcHJvYmxlbXMuIEZvciBvcmRlcmluZyB1c2Ugd2FpdHF1 ZXVlcywKY29tcGxldGlvbnMgb3IgdGhlIHdvcmsvdGltZXIgc3BlY2lmaWMgdGhpbmdzIHRvIG9y ZGVyIHN0dWZmLiBGb3IgbGlmZXRpbWUKcHJvYmxlbXMgdXNlIHJlZmNvdW50aW5nLgoKT2ZjIGJl Y2F1c2Ugc3RydWN0X211dGV4IGlzIHN1Y2ggYSBzcHJhd2xpbmcgYmVhc3QgdGhhdCdzIGEgYml0 IHRyaWNreSwKYnV0IHRoZSBzaW1wbGUgb3JkZXJpbmcgcHJvYmxlbSBzaG91bGQgYmUgc29sdmVk IHdpdGggYSBmbHVzaF93b3JrIG9mIHRoZQphc3luYyBndWMgbG9hZGVyIG9yIHNpbWlsYXIuIFlv dSBzdGlsbCBuZWVkIHRvIGdyYWIgdGhlIHN0cnVjdF9tdXRleCBmb3IKdGhlIGFzeW5jIGxvYWRl ciAoYmVjYXVzZSB0aGF0IHRvdWNoZXMgc2hhcmVkIGdlbSBzdGF0ZSwgaS5lLiBpdCdzIGFib3V0 CmRhdGEgY29uc2lzdGVuY3kpLCBidXQgbm90IGJlY2F1c2Ugb2Ygb3JkZXJpbmcgaXNzdWVzLgoK PiBOb25lIG9mIHRoaXMgbG9hZGVyIGNvZGUgcmVhbGx5IG5lZWRzIHRoZSBzdHJ1Y3RfbXV0ZXgg c3BlY2lmaWNhbGx5OyB0aGUKPiBXQVJOX09OIG1hY3JvcyB3ZXJlIGp1c3QgdGhlcmUgdG8gaGVs cCBjYWxsZXJzIGtub3cgd2hhdCBkZWdyZWUgb2YKPiBzeW5jaHJvbmlzYXRpb24gdGhleSBuZWVk IHRvIG9yZ2FuaXNlIGJlZm9yZSBjYWxsaW5nIHRoZXNlIGZ1bmN0aW9ucy4KPiAKPiBbc25pcF0K PiAKPiA+PkJUVywgdGhlIGV4aXN0aW5nIERNQyBsb2FkZXIgcHJvYmFibHkgd29uJ3Qgd29yayBv biBBbmRyb2lkIDooCj4gPgo+ID5ZZWFoIEkgY29tcGxldGVseSBtaXNzZWQgb3V0IG9uIHRoaXMg ZnVuIHNpbmNlIEkgcHJlc3VtZWQgdGhhdCBmaXJtd2FyZQo+ID5sb2FkaW5nIGlzIGVhc3kgYW5k IHNpbXBsZS4gQW5kIGlmIHlvdSBsb29rIGFyb3VuZCBvbiBvdGhlciBkcm0gZHJpdmVycyBpdAo+ ID5pbmRlZWQgaXMsIHRoZXkgYWxsIHVzZSBhIHN5bmNocm9ub3VzIHJlcXVlc3RfZmlybXdhcmUg YW5kIGlmIHRoZSBmaXJtd2FyZQo+ID5pc24ndCB0aGVyZSwgdGhleSBqdXN0IGZhbGwgb3ZlciAo ZnVsbHkgaW4gdGhlIGNhc2Ugb2YgcmFkZW9uLmtvLAo+ID5wYXJ0aWFsbHkgaW4gdGhlIGNhc2Ug b2Ygbm91dmVhdS5rbyBzaW5jZSB0aGV5IGhhdmUgYWxsIHRoZSBzdXBwb3J0IGluCj4gPnBsYWNl IGZvciBoYW5kbGluZyBhIGttcy1vbmx5IGFjY2VsLWxlc3MgZ3B1IGluIHVzZXJzcGFjZSBhbnl3 YXksIGxpa2Ugd2UKPiA+ZG8pLiBCdXQgZm9yIGEgYnVuY2ggb2YgcmVhc29ucyAoYWZhaWsgaXQn cyAieW91IGNhbid0IGluY2x1ZGUgYSBibG9iIGluIGEKPiA+Z3BsLWVkIGtlcm5lbCBpbWFnZSIg d2UgbmVlZCBhc3luYyBmaXJtd2FyZSBsb2FkaW5nIGZvciBjcm9zJmFuZHJvaWQpLgo+ID4KPiA+ VGhhdCBsZWF2ZXMgdXMgd2l0aCBhIHNpdHVhdGlvbiB3aGVyZSB3ZSBzaG91bGQgaGF2ZSBkb25l IGEgc3BlY2lhbCBkZXNpZ24KPiA+ZGlzY3Vzc2lvbiBhYm91dCBhc3luY2hyb25vdXMgZmlybXdh cmUsIGJ1dCBzb21laG93IGZhaWxlZCBkbyB0byB0aGF0Lgo+ID5XaGljaCBsZWF2ZXMgdXMgaW4g YSB2ZXJ5IHVnbHkgcG9zaXRpb24uCj4gPgo+ID5JIHRhbGtlZCB3aXRoIGEgYnVuY2ggb2YgcGVv cGxlIG92ZXIgdGhlIHBhc3QgZmV3IGRheXMgdG8gZmlndXJlIG91dCBob3cKPiA+dGhpcyBpcyBz dXBwb3NlZCB0byB3b3JrIGFuZCBhbHNvIGZpZ3VyZSBvdXQgd2h5IGl0J3MgYmVpbmcgZG9uZSBs aWtlIHRoYXQKPiA+dG9kYXkuIEkgdGhpbmsgSSBoYXZlIGEgcmVhc29uYWJsZSBnb29kIHBsYW4g Zm9yIG1vdmluZyBmb3J3YXJkIHRvby4gSSdsbAo+ID5zdGFydCBhIG5ldyB0b3AtbGV2ZWwgdGhy ZWFkIGhlcmUgdG8gZGlzY3VzcyB0aGlzLgo+ID4KPiA+VGhhbmtzLCBEYW5pZWwKPiAKPiBJdCBy ZWFsbHkgaXNuJ3QgImFzeW5jaHJvbm91cyIsIGl0J3MganVzdCAiZGVmZXJyZWQiIC0tIGJ1dCBp bXBseWluZyB0aGF0Cj4gZXZlcnl0aGluZyB0aGF0IHJlbGllcyBvbiBoYXZpbmcgdGhlIGZpcm13 YXJlIGF2YWlsYWJsZSBhbHNvIGhhcyB0byBiZQo+IGRlZmVycmVkLiBGb3IgdGhlIERNQywgdGhh dCBtZWFucyB3ZSBjYW4ndCBoYXZlIGZ1bGwgUE07IGFuZCBmb3IgdGhlIEd1Qywgd2UKPiBjYW4n dCBzdWJtaXQgYW55IGJhdGNoZXMgYXQgYWxsIHRvIGFueSBlbmdpbmUgdW50aWwgdGhlIGYvdyBs b2FkIGlzIGRvbmUuCgpZZWFoIEknbSBvayB3aXRoIGp1c3QgY2FsbGluZyBpdCAiZGVmZXJyZWQi LCBhcyBsb25nIGFzIHdlIGFncmVlIG9uIHRoZQptZWFuaW5nIG9mICJub3QgcnVuIHN5bmNocm9u b3VzbHkgZnJvbSBkcml2ZXIgbG9hZCIuIEFuZCBzaW5jZSB0aGVyZSdzIG5vCnJlYXNvbiB0byB3 YWl0IGZvciB1c2Vyc3BhY2UgdG8gZG8gYW55dGhpbmcgd2UgbWlnaHQgYXMgd2VsbCBydW4gYW55 dGhpbmcKd2UgZGVmZXIgaW4gYW4gYXN5bmMgd29ya2VyIChhbmQgaW5zZXJ0IGFueSBuZWNlc3Nh cnkgd2FpdHMgdGhlcmUpLCB3aGljaAppcyB3aHkgSSBqdXN0IGNhbGwgYWxsIGRlZmVycmVkIGRy aXZlciBsb2FkIHdvcmsgImFzeW5jIi4KCj4gUmVhbGx5LCBpdCB3b3VsZCBiZSBzaW1wbGVyIGlm IHdlIGRpZG4ndCBzdXBwb3J0IGF1dG9tYXRpYyBmaXJtd2FyZSBsb2FkaW5nCj4gaW4gdGhlIGtl cm5lbCBhdCBhbGwsIGFuZCBoYWQgYSB1c2VybGFuZCBzdGFydHVwIHByb2Nlc3Mgd2hvc2Ugam9i IHdhcyB0bwo+IGxvY2F0ZSBhbmQgdHJhbnNmZXIgdGhlIHJlcXVpcmVkIGZpcm13YXJlIGJlZm9y ZSB0aGUgZGV2aWNlIGNvdWxkIGJlIHVzZWQuCj4gQnV0IHRoYXQgd291bGQganVzdCBnaXZlIHVz IHRoZSBvcHBvc2l0ZSBwcm9ibGVtLCBiZWNhdXNlIHRoZSBkaXNwbGF5IGRldmljZQo+IGlzIG9u ZSBvZiB0aGUgdGhpbmdzIHRoYXQgL3Nob3VsZC8gYmUgdXNhYmxlIGV2ZW4gYmVmb3JlIHRoZSBy b290ZnMgaXMKPiBtb3VudGVkLgoKcmVxdWVzdF9maXJtd2FyZSBzdXBwb3J0cyB0aGlzIHVzZXJs YW5kIHByb2Nlc3MgeW91J3JlIGRlc2NyaWJpbmcgYWJvdmUsCmlmIHlvdSBlbmFibGUgQ09ORklH X0ZXX0xPQURFUl9VU0VSX0hFTFBFUl9GQUxMQkFDSy4gV2hpY2ggaXMgd2hhdCBJCnN1Z2dlc3Rl ZCBBbmRyb2lkIHNob3VsZCB1c2UgKGNyb3MgbWlnaHQgcnVuIGludG8gYSBuYWNrIGZyb20gZ29v Z2xlCnVwc3RyZWFtKS4gVW5mb3J0dW5hdGVseSAoc3BlY2lhbCBzbm93Zmxha2UgZHJpdmVyIHRo YXQgbm8gb25lIHdhbnRlZCB0bwpjb252ZXJ0KSByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdCBkb2Vz IF9ub3RfIHN1cHBvcnQgdGhpcy4gVGhhdCdzIHdoeSB3ZQpuZWVkIHRvIHVzZSByZXF1ZXN0X2Zp cm13YXJlICsgb3VyIG93biB3b3JrZXIgKG90aGVyd2lzZSByZXF1ZXN0X2Zpcm13YXJlCndvdWxk IGp1c3QgYmxvY2sgZXZlcnlvbmUpLgoKV3J0IHVzaW5nIGttcyBhcGlzIGJlZm9yZSB3ZSBoYXZl IGFsbCB0aGUgZmlybXdhcmUgbG9hZGVkOiBUaGF0J3MKZGVmaW5pdGVseSBJIHVzZSBjYXNlIHdl IHNob3VsZCB0cnkgdG8gc3VwcG9ydCwgdW5mb3J0dW5hdGVseSB0aGUgY3VycmVudApwcm9wb3Nh bCBvZiBibG9ja2luZyBmb3IgZ3VjIGxvYWRpbmcgaW4gZ2VtX29wZW4gd2lsbCBicmVhayB0aGF0 IC0gdGhlcmUncwpvbmx5IG9uZSBkZXZpY2Ugbm9kZSBmb3IgYm90aCBrbXMgYW5kIHJlbmRlcmlu Zy4gU29tZSBvZiB0aGUgb3RoZXIKcHJvcG9zYWxzIGZvciBhc3luY15XZGVmZXJyZWQgZ2VtIGlu aXQgKGJvdGggc3RhbGxpbmcgaW4gYWRkX3JlcXVlc3Qgb3IKcmV1c2luZyB0aGUgcmVzZXQtaW4t cHJvZ3Jlc3MgbG9naWMpIHdvdWxkIHNvbHZlIHRoYXQsIGJ1dCBoYXZlIHRoZWlyIG93bgpzZXRz IG9mIGRvd25zaWRlcy4gVGhlc2Uga2luZCBvZiBwcm9ibGVtcyBhcmUgZXhhY3RseSB3aHkgSSB3 YW50IGEgcHJvcGVyCmRlc2lnbiBkaXNjdXNzaW9uIGFib3V0IGFzeW5jXldkZWZlcnJlZCBnZW0g aW5pdDogV2UgbmVlZCBhIGNsZWFyIHNldCBvZgpyZXF1aXJlbWVudHMsIHRoZW4gd2VpZ2ggdGhl IGRpZmZlcmVudCBvcHRpb25zIGFnYWluc3QgZWFjaCBhbm90aGVyIGFuZApkZWNpZGUgdXBvbiBv bmUgb2YgdGhlIDMtNCBwcm9wb3NlZCB0aHVzIGZhci4KCj4gQW55d2F5LCBJJ3ZlIHBvc3RlZCBh IHNpbXBsaWZpZWQgdjMgd2hpY2ggb25seSBzdXBwb3J0cyBzeW5jaHJvbm91cyBmZXRjaCwKPiB3 aXRob3V0IHRoZSBwcmVmZXRjaCBjYXBhYmlsaXR5LiBTZWUgc2VwYXJhdGUgdGhyZWFkIC4uLgoK V2lsbCB0YWtlIGEgbG9vaywgdGhhbmtzLgotRGFuaWVsCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3 YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=