From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerome Glisse Subject: Re: [PATCH 3/4] drm/radeon: consolidate uvd/vce initialization, resume and suspend. Date: Wed, 16 Mar 2016 18:43:49 +0100 Message-ID: <20160316174348.GA7402@redhat.com> References: <1458132531-5524-1-git-send-email-jglisse@redhat.com> <56E959BE.7030608@vodafone.de> <56E97974.4050107@amd.com> <20160316155603.GA6483@redhat.com> <56E9929C.60509@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id BDFDD6E9CF for ; Wed, 16 Mar 2016 17:43:54 +0000 (UTC) Content-Disposition: inline In-Reply-To: <56E9929C.60509@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: Alex Deucher , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXIgMTYsIDIwMTYgYXQgMDY6MDY6MzZQTSArMDEwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAxNi4wMy4yMDE2IHVtIDE2OjU2IHNjaHJpZWIgSmVyb21lIEdsaXNzZToK PiA+T24gV2VkLCBNYXIgMTYsIDIwMTYgYXQgMDQ6MTk6MTZQTSArMDEwMCwgQ2hyaXN0aWFuIEvD tm5pZyB3cm90ZToKPiA+PkFtIDE2LjAzLjIwMTYgdW0gMTU6NTkgc2NocmllYiBKZXJvbWUgR2xp c3NlOgo+ID4+Pk9uIFdlZCwgTWFyIDE2LCAyMDE2IGF0IDI6MDMgUE0sIENocmlzdGlhbiBLw7Zu aWcKPiA+Pj48ZGVhdGhzaW1wbGVAdm9kYWZvbmUuZGU+IHdyb3RlOgo+ID4+Pj5BbSAxNi4wMy4y MDE2IHVtIDEzOjQ4IHNjaHJpZWIgSsOpcsO0bWUgR2xpc3NlOgo+ID4+Pj4+RnJvbTogSsOpcm9t ZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNvbT4KPiA+Pj4+Pgo+ID4+Pj4+VGhpcyBjb25zb2xp ZGF0ZSB1dmQvdmNlIGludG8gYSBjb21tb24gc2hhcGUgZm9yIGFsbCBnZW5lcmF0aW9uLiBJdAo+ ID4+Pj4+YWxzbyBsZXZlcmFnZSB0aGUgcmRldi0+aGFzX3V2ZCBmbGFncyB0byBrbm93IHdoYXQg aXQgaXMgdXNlbGVzcyB0bwo+ID4+Pj4+dHJ5IHRvIHJlc3VtZS9zdXNwZW5kIHV2ZC92Y2UgYmxv Y2suCj4gPj4+Pj4KPiA+Pj4+PlRoZXJlIGlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB3aGVuIHRo ZXJlIGlzIG5vIGVycm9yLiBPbiBlcnJvciB0aGUKPiA+Pj4+PmRldmljZSBkcml2ZXIgd2lsbCBi ZWhhdmUgZGlmZmVyZW50bHkgdGhhbiBiZWZvcmUgYWZ0ZXIgdGhpcyBwYXRjaC4KPiA+Pj4+Pkl0 IHNob3VsZCBub3cgc2FmZWx5IGlnbm9yZSB1dmQvdmNlIGVycm9ycyBhbmQga2VlcHMgbm9ybWFs IG9wZXJhdGlvbgo+ID4+Pj4+b2Ygb3RoZXJzIGVuZ2luZS4gVGhpcyBpcyBhbiBpbXByb3ZlbWVu dCBvdmVyIGN1cnJlbnQgc2l0dWF0aW9uIHdoZXJlCj4gPj4+Pj53ZSBoYXZlIGRpZmZlcmVudCBi ZWhhdmlvciBkZXBlbmRpbmcgb24gR1BVIGdlbmVyYXRpb24gYW5kIG9uIHdoYXQKPiA+Pj4+PmZh aWxzLgo+ID4+Pj4+Cj4gPj4+Pj5GaW5hbHkgdGhpcyBpcyBhIHByZXBhcmF0b3J5IHN0ZXAgZm9y IGEgcGF0Y2ggd2hpY2ggYWxsb3cgdG8gZGlzYWJsZQo+ID4+Pj4+dXZkL3ZjZSBhcyBhIGRyaXZl ciBvcHRpb24uCj4gPj4+Pj4KPiA+Pj4+PlRoaXMgaGF2ZSBvbmx5IGJlZW4gdGVzdGVkIG9uIHNv dXRoZXJuIGlzbGFuZCBzbyBwbGVhc2UgdGVzdCBpdCBvbgo+ID4+Pj4+b3RoZXIgZ2VuZXJhdGlv bnMgKGkgZG8gbm90IGhhdmUgaGFyZHdhcmUgaGFuZHkgZm9yIG5vdykuCj4gPj4+Pj4KPiA+Pj4+ PlNpZ25lZC1vZmYtYnk6IErDqXLDtG1lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgo+ID4+ Pj4+Q2M6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KPiA+Pj4+PkNj OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4gPj4+Pk5BSywg c2tpcHBpbmcgVVZEIGFuZCBWQ0Ugc3VzcGVuZC9yZXN1bWUgd2hlbiBpbml0aWFsaXphdGlvbiBm YWlscyBzaG91bGQKPiA+Pj4+YWxyZWFkeSBiZSBpbXBsZW1lbnRlZC4KPiA+Pj4+Cj4gPj4+PlRo ZXJlIG1pZ2h0IGJlIHNvbWUgKHF1aXRlIHNvbWUpIGJ1Z3MgaW4gdGhlcmUsIGJ1dCB0aGF0IGRv ZXNuJ3QganVzdGlmeQo+ID4+Pj5yZXdvcmtpbmcgdGhlIGluaXRpYWxpemF0aW9uIG92ZXIgYWxs IGRpZmZlcmVudCBnZW5lcmF0aW9ucy4gRXNwZWNpYWxseQo+ID4+Pj5zaW5jZSB5b3UgZG9uJ3Qg aGF2ZSBoYXJkd2FyZSB0byB0ZXN0IGFsbCBvZiB0aGVtLgo+ID4+Pj4KPiA+Pj4+SnVzdCBtYWtl IHN1cmUgdGhhdCByYWRlb25fdXZkL3ZjZV9maW5pKCkgaXMgY2FsbGVkIHdoZW4gc29tZXRoaW5n IGdvZXMKPiA+Pj4+d3JvbmcgYW5kL29yIHRoYXQgdGhlIFVWRC9WQ0UgQk8gaXMgcHJvcGVybHkg cmVsZWFzZWQuCj4gPj4+Pgo+ID4+Pj5SZWdhcmRzLAo+ID4+Pj5DaHJpc3RpYW4uCj4gPj4+Q3Vy cmVudCBjb2RlIGlzIGEgbWVzcyB3aGVuIGl0IGNvbWVzIHRvIGhhbmRsaW5nIGVycm9yIHJlbGF0 ZWQgdG8KPiA+Pj51dmQvdmNlLiBUaGlzIHBhdGNoIGNvbnNvbGlkYXRlIGNvbnRyb2wgZmxvdyBp biBzb21ldGhpbmcgZWFzeSB0bwo+ID4+PmZvbGxvdy4gWW91IGNhbiBjaGVjayB0aGF0IHRoZXJl IGlzIGFic29sdWxldHkgbm8gY29udHJvbCBmbG93IGNoYW5nZQo+ID4+PmZvciB0aGUgY2FzZSB3 aGVyZSB1dmQvdmNlIHdvcmtzIGFuZCB0aHVzIGl0IGRvZXMgbm90IGJyZWFrIGFueXRoaW5nCj4g Pj4+dGhhdCB3b3Jrcy4gSXQgd2lsbCBvbmx5IGdyYWNlZnVsbHkgZmFpbHMgYW5kIGNsZWFudXAg aWYgdGhpbmdzIGdvCj4gPj4+d3JvbmcuIFNvIHdoaWxlIGkgaGF2ZSBub3QgdGVzdGVkIG9uIG90 aGVyIGh3IGkgYW0gY29uZmlkZW50IHRoYXQgdGhpcwo+ID4+PmRvZXMgbm90IGludHJvZHVjZSBy ZWdyZXNzaW9uLgo+ID4+Pgo+ID4+PkkgdHJpZWQgdG8gZG8gaXQgd2l0aG91dCBjb25zb2xpZGF0 aW9uIGJ1dCBpdCBlbmRlZCB1cCBpbiBhZGRpbmcgZXZlbgo+ID4+Pm1vcmUgaWYoKSBsZXZlbHMg dGhhdCBsaW5lIGRpZCBiZWdpbnMgYWZ0ZXIgODBjb2x1bXMuIFNvIHBsZWFzZQo+ID4+PnJlY29u c2lkZXIgYmVjYXVzZSB0aGlzIGlzIGFuIGltcHJvdmVtZW50IG92ZXIgZXhpc3RpbmcgY29kZS4K PiA+PldlbGwgdGhlbiBwbGVhc2UgcG9pbnQgb3V0IGF0IHRoZSBleGFtcGxlIG9mIHRoZSBTSSBv ciBDSUsgY29kZSB3aGF0IGV4YWN0bHkKPiA+PmlzIG1pc3NpbmcgaGVyZS4KPiA+R29pbmcgZnJv bSA6Cj4gPglpZiAocmRldi0+aGFzX3V2ZCkgewo+ID4JCXIgPSB1dmRfdjJfMl9yZXN1bWUocmRl dik7Cj4gPgkJaWYgKCFyKSB7Cj4gPgkJCXIgPSByYWRlb25fZmVuY2VfZHJpdmVyX3N0YXJ0X3Jp bmcocmRldiwKPiA+CQkJCQkJCSAgIFI2MDBfUklOR19UWVBFX1VWRF9JTkRFWCk7Cj4gPgkJCWlm IChyKQo+ID4JCQkJZGV2X2VycihyZGV2LT5kZXYsICJVVkQgZmVuY2VzIGluaXQgZXJyb3IgKCVk KS5cbiIsIHIpOwo+ID4JCX0KPiA+CQlpZiAocikKPiA+CQkJcmRldi0+cmluZ1tSNjAwX1JJTkdf VFlQRV9VVkRfSU5ERVhdLnJpbmdfc2l6ZSA9IDA7Cj4gPgl9Cj4gPglyID0gcmFkZW9uX3ZjZV9y ZXN1bWUocmRldik7Cj4gPglpZiAoIXIpIHsKPiA+CQlyID0gdmNlX3YxXzBfcmVzdW1lKHJkZXYp Owo+ID4JCWlmICghcikKPiA+CQkJciA9IHJhZGVvbl9mZW5jZV9kcml2ZXJfc3RhcnRfcmluZyhy ZGV2LAo+ID4JCQkJCQkJICAgVE5fUklOR19UWVBFX1ZDRTFfSU5ERVgpOwo+ID4JCWlmICghcikK PiA+CQkJciA9IHJhZGVvbl9mZW5jZV9kcml2ZXJfc3RhcnRfcmluZyhyZGV2LAo+ID4JCQkJCQkJ ICAgVE5fUklOR19UWVBFX1ZDRTJfSU5ERVgpOwo+ID4JfQo+ID4JaWYgKHIpIHsKPiA+CQlkZXZf ZXJyKHJkZXYtPmRldiwgIlZDRSBpbml0IGVycm9yICglZCkuXG4iLCByKTsKPiA+CQlyZGV2LT5y aW5nW1ROX1JJTkdfVFlQRV9WQ0UxX0lOREVYXS5yaW5nX3NpemUgPSAwOwo+ID4JCXJkZXYtPnJp bmdbVE5fUklOR19UWVBFX1ZDRTJfSU5ERVhdLnJpbmdfc2l6ZSA9IDA7Cj4gPgl9Cj4gPgo+ID4K PiA+VG86Cj4gPglyID0gdXZkX3YyXzJfcmVzdW1lKHJkZXYpOwo+ID4JaWYgKHIpCj4gPgkJZ290 byBlcnJvcjsKPiA+CXIgPSByYWRlb25fZmVuY2VfZHJpdmVyX3N0YXJ0X3JpbmcocmRldiwgUjYw MF9SSU5HX1RZUEVfVVZEX0lOREVYKTsKPiA+CWlmIChyKQo+ID4JCWdvdG8gZXJyb3JfdXZkOwo+ ID4JciA9IHJhZGVvbl92Y2VfcmVzdW1lKHJkZXYpOwo+ID4JaWYgKHIpCj4gPgkJZ290byBlcnJv cl91dmQ7Cj4gPglyID0gdmNlX3YxXzBfcmVzdW1lKHJkZXYpOwo+ID4JaWYgKHIpCj4gPgkJZ290 byBlcnJvcl92Y2U7Cj4gPglyID0gcmFkZW9uX2ZlbmNlX2RyaXZlcl9zdGFydF9yaW5nKHJkZXYs IFROX1JJTkdfVFlQRV9WQ0UxX0lOREVYKTsKPiA+CWlmIChyKQo+ID4JCWdvdG8gZXJyb3JfdmNl Owo+ID4JciA9IHJhZGVvbl9mZW5jZV9kcml2ZXJfc3RhcnRfcmluZyhyZGV2LCBUTl9SSU5HX1RZ UEVfVkNFMl9JTkRFWCk7Cj4gPglpZiAocikKPiA+CQlnb3RvIGVycm9yX3ZjZTsKPiA+CXJldHVy bjsKPiA+ZXJyb3JfdmNlOgo+ID4JcmFkZW9uX3ZjZV9zdXNwZW5kKHJkZXYpOwo+ID5lcnJvcl91 dmQ6Cj4gPglyYWRlb25fdXZkX3N1c3BlbmQocmRldik7Cj4gPmVycm9yOgo+ID4JZGV2X2Vycihy ZGV2LT5kZXYsICJVVkQvVkNFIHN0YXJ0dXAgZXJyb3IgKCVkKS5cbiIsIHIpOwo+ID4JLyogT24g ZXJyb3IganVzdCBkaXNhYmxlIGV2ZXJ5dGhpbmcuICovCj4gPglyYWRlb25fdmNlX2ZpbmkocmRl dik7Cj4gPglyYWRlb25fdXZkX2ZpbmkocmRldik7Cj4gPglyZGV2LT5yaW5nW1I2MDBfUklOR19U WVBFX1VWRF9JTkRFWF0ucmluZ19zaXplID0gMDsKPiA+CXJkZXYtPnJpbmdbVE5fUklOR19UWVBF X1ZDRTFfSU5ERVhdLnJpbmdfc2l6ZSA9IDA7Cj4gPglyZGV2LT5yaW5nW1ROX1JJTkdfVFlQRV9W Q0UyX0lOREVYXS5yaW5nX3NpemUgPSAwOwo+IAo+IEFuZCBhcyBJIHNhaWQgdGhhdCBpcyBleGFj dGx5IHdoYXQgeW91IHNob3VsZCBOT1QgYmUgZG9pbmcgaGVyZS4gT25jZSB0aGUKPiBmaXJtd2Fy ZSBpcyBsb2FkZWQgdGhlIGJsb2NrIHNob3VsZCBiZSBrZXB0IGluIHRoYXQgc3RhdGUuCj4gCj4g RnJlZWluZyB0aGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIGZpcm13YXJlIGlzIGFsc28gbm90 IGEgZ29vZCBpZGVhIGF0IGFsbAo+IGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aG8gZXhhY3RseSBp cyBhY2Nlc3NpbmcgaXQuCgpBbmQgd2hhdCBpIGFtIHNheWluZyBpcyB0aGF0IGJsb2NrIGlzIG5v dCByZXNwb25kaW5nIHNvIGl0IGRvZXMgbm90IG1hdHRlcgp3aGF0IG1lbW9yeSBlbmR1cCB0aGVy ZSBhcyBpdCBvbmx5IHRyeSB0byByZWFkIGZyb20gdGhlIGZpcm13YXJlIGFmYWljdC4KU28gbm90 aGluZyBiYWQgd2lsbCBjb21lIGZyb20gdGhhdCwgYmxvY2sgaXMgYWxyZWFkeSBpbiBub24gZnVu Y3Rpb25hbApzdGF0ZSB3aGF0IHdvcnNlIGNhbiBoYXBwZW4gPwoKCj4gPklzIGxvdCBtb3JlIGNs ZWFyIHRvIG1lIHRoYW4gYnVuY2ggb2YgaW50ZXJ0d2luZSBpZi9lbHNlLiBBIGNsZWFyIGVycm9y IHBhdGgKPiA+Zm9yIHdoaWNoIHlvdSBkbyBub3QgaGF2ZSB0byBqdW1wIHRocm91Z2ggaWYgbGV2 ZWwgdG8gc2VlIHdoYXQgZ2V0IGV4ZWN1dGVkCj4gPm9yIG5vdCBvbiBlcnJvci4gVGhlIG9ubHkg ZGlmZmVyZW5jZSBpcyB0aGF0IGl0IGRvZXMgdGllIHV2ZCBhbmQgdmNlIHRvZ2V0aGVyLgo+ID5J IGRpZCB0aGF0IG9uIHB1cnBvc2UgYmVjYXVzZSBvbiB0aGUgaHcgaSBhbSBwbGF5aW5nIHdpdGgg dGhlIHZjZSBzZWVtcyB0byBiZQo+ID51c2VsZXNzIHdoZW4gdGhlIHV2ZCBibG9jayBmYWlscyAo b3Bwb3NpdGUgc2VlbXMgdG8gYmUgdHJ1ZSB0b28pLiBJZiB5b3UgdGhpbmsKPiA+d2Ugc2hvdWxk IHN0aWxsIHRyeSB0byBpbml0IHZjZSB3aGVuIHV2ZCBmYWlscyBvciB1dmQgd2hlbiB2Y2UgZmFp bHMgaSBjYW4KPiA+c3BsaXQgdXZkIGFuZCB2Y2UuCj4gCj4gVVZEIGFuZCBWQ0UgYXJlIHR3byBj b21wbGV0ZWx5IHNlcGFyYXRlIGJsb2NrcywgdGhleSBzaG91bGRuJ3QgYmUgcmVsYXRlZCB0bwo+ IGVhY2ggb3RoZXIgaW4gYW55d2F5Lgo+IAo+IFdoZW4geW91IHNlZSBmYWlsdXJlcyBvZiBib3Ro IGF0IHRoZSBzYW1lIHRpbWUgaXQncyByYXRoZXIgdW5saWtlbHkgdGhhdCBpdAo+IGlzIGFjdHVh bGx5IHJlbGF0ZWQgdG8gdGhlbS4KCkZpbmUgaSB3aWxsIHNwbGl0IHRoZW4uCgoKPiA+VGhlIG90 aGVyIGRpZmZlcmVuY2Ugd2l0aCBleGlzdGluZyBjb2RlIGlzIHRoYXQgaSBmcmVlIHJlc291cmNl cyBub3JtYWx5IHVzZQo+ID51dmQvdmNlIG9uIGVycm9yIChmcmVlIGZ3IGJ1ZmZlcikuIFRoaXMg aXMganVzdCBtZSB0cnlpbmcgdG8gZnJlZSByZXNvdXJjZQo+ID5lYXJseSBhbmQgaXQgaGFzIG5v IGltcGFjdCBhcyBibG9jayBhcmUgbm90IHdvcmtpbmcuCj4gPgo+ID4tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+ID4KPiA+U2Vjb25kIHBhcnQgd2UgZ28gZnJvbToKPiA+CWlmIChyZGV2LT5o YXNfdXZkKSB7Cj4gPgkJcmluZyA9ICZyZGV2LT5yaW5nW1I2MDBfUklOR19UWVBFX1VWRF9JTkRF WF07Cj4gPgkJaWYgKHJpbmctPnJpbmdfc2l6ZSkgewo+ID4JCQlyID0gcmFkZW9uX3JpbmdfaW5p dChyZGV2LCByaW5nLCByaW5nLT5yaW5nX3NpemUsIDAsCj4gPgkJCQkJICAgICBSQURFT05fQ1Bf UEFDS0VUMik7Cj4gPgkJCWlmICghcikKPiA+CQkJCXIgPSB1dmRfdjFfMF9pbml0KHJkZXYpOwo+ ID4JCQlpZiAocikKPiA+CQkJCURSTV9FUlJPUigicmFkZW9uOiBmYWlsZWQgaW5pdGlhbGl6aW5n IFVWRCAoJWQpLlxuIiwgcik7Cj4gPgkJfQo+ID4JfQo+ID4JciA9IC1FTk9FTlQ7Cj4gPglyaW5n ID0gJnJkZXYtPnJpbmdbVE5fUklOR19UWVBFX1ZDRTFfSU5ERVhdOwo+ID4JaWYgKHJpbmctPnJp bmdfc2l6ZSkKPiA+CQlyID0gcmFkZW9uX3JpbmdfaW5pdChyZGV2LCByaW5nLCByaW5nLT5yaW5n X3NpemUsIDAsCj4gPgkJCQkgICAgIFZDRV9DTURfTk9fT1ApOwo+ID4JcmluZyA9ICZyZGV2LT5y aW5nW1ROX1JJTkdfVFlQRV9WQ0UyX0lOREVYXTsKPiA+CWlmIChyaW5nLT5yaW5nX3NpemUpCj4g PgkJciA9IHJhZGVvbl9yaW5nX2luaXQocmRldiwgcmluZywgcmluZy0+cmluZ19zaXplLCAwLAo+ ID4JCQkJICAgICBWQ0VfQ01EX05PX09QKTsKPiA+CWlmICghcikKPiA+CQlyID0gdmNlX3YxXzBf aW5pdChyZGV2KTsKPiA+CWVsc2UgaWYgKHIgIT0gLUVOT0VOVCkKPiA+CQlEUk1fRVJST1IoInJh ZGVvbjogZmFpbGVkIGluaXRpYWxpemluZyBWQ0UgKCVkKS5cbiIsIHIpOwo+ID4KPiA+Cj4gPlRv Ogo+ID4JcmluZyA9ICZyZGV2LT5yaW5nW1I2MDBfUklOR19UWVBFX1VWRF9JTkRFWF07Cj4gPgly ID0gcmFkZW9uX3JpbmdfaW5pdChyZGV2LCByaW5nLCByaW5nLT5yaW5nX3NpemUsIDAsIFJBREVP Tl9DUF9QQUNLRVQyKTsKPiA+CWlmIChyKQo+ID4JCWdvdG8gZXJyb3I7Cj4gPglyID0gdXZkX3Yx XzBfaW5pdChyZGV2KTsKPiA+CWlmIChyKQo+ID4JCWdvdG8gZXJyb3JfdXZkOwo+ID4JcmluZyA9 ICZyZGV2LT5yaW5nW1ROX1JJTkdfVFlQRV9WQ0UxX0lOREVYXTsKPiA+CXIgPSByYWRlb25fcmlu Z19pbml0KHJkZXYsIHJpbmcsIHJpbmctPnJpbmdfc2l6ZSwgMCwgVkNFX0NNRF9OT19PUCk7Cj4g PglpZiAocikKPiA+CQlnb3RvIGVycm9yX3ZjZTE7Cj4gPglyaW5nID0gJnJkZXYtPnJpbmdbVE5f UklOR19UWVBFX1ZDRTJfSU5ERVhdOwo+ID4JciA9IHJhZGVvbl9yaW5nX2luaXQocmRldiwgcmlu ZywgcmluZy0+cmluZ19zaXplLCAwLCBWQ0VfQ01EX05PX09QKTsKPiA+CWlmIChyKQo+ID4JCWdv dG8gZXJyb3JfdmNlMjsKPiA+CXIgPSB2Y2VfdjFfMF9pbml0KHJkZXYpOwo+ID4JaWYgKHIpCj4g PgkJZ290byBlcnJvcl92Y2U7Cj4gPglyZXR1cm47Cj4gPmVycm9yX3ZjZToKPiA+CXJhZGVvbl9y aW5nX2ZpbmkocmRldiwgJnJkZXYtPnJpbmdbVE5fUklOR19UWVBFX1ZDRTJfSU5ERVhdKTsKPiA+ ZXJyb3JfdmNlMjoKPiA+CXJhZGVvbl9yaW5nX2ZpbmkocmRldiwgJnJkZXYtPnJpbmdbVE5fUklO R19UWVBFX1ZDRTFfSU5ERVhdKTsKPiA+ZXJyb3JfdmNlMToKPiA+CXV2ZF92MV8wX2ZpbmkocmRl dik7Cj4gPmVycm9yX3V2ZDoKPiA+CXJhZGVvbl9yaW5nX2ZpbmkocmRldiwgJnJkZXYtPnJpbmdb UjYwMF9SSU5HX1RZUEVfVVZEX0lOREVYXSk7Cj4gPmVycm9yOgo+ID4JZGV2X2VycihyZGV2LT5k ZXYsICJVVkQvVkNFIHJlc3VtZSBlcnJvciAoJWQpLlxuIiwgcik7Cj4gPgkvKiBPbiBlcnJvciBq dXN0IGRpc2FibGUgZXZlcnl0aGluZy4gKi8KPiA+CXJhZGVvbl91dmRfc3VzcGVuZChyZGV2KTsK PiA+CXJhZGVvbl92Y2Vfc3VzcGVuZChyZGV2KTsKPiA+CXJhZGVvbl91dmRfZmluaShyZGV2KTsK PiA+CXJhZGVvbl92Y2VfZmluaShyZGV2KTsKPiA+CXJkZXYtPnJpbmdbUjYwMF9SSU5HX1RZUEVf VVZEX0lOREVYXS5yaW5nX3NpemUgPSAwOwo+ID4JcmRldi0+cmluZ1tUTl9SSU5HX1RZUEVfVkNF MV9JTkRFWF0ucmluZ19zaXplID0gMDsKPiA+CXJkZXYtPnJpbmdbVE5fUklOR19UWVBFX1ZDRTJf SU5ERVhdLnJpbmdfc2l6ZSA9IDA7Cj4gPgo+ID5BZ2FpbiBsb3Qgc2ltcGxlciB0byBmb2xsb3cg Y29udHJvbCBmbG93IHRoYW4gdG8ganVtcCB0aHJvdWdoIHZhcmlvdXMgbGV2ZWwKPiA+b2YgaWYv ZWxzZS4gQWdhaW4gdXZkIGFuZCB2Y2UgdGllZCB0b2dldGhlciAoYW5kIGFnYWluIGkgY2FuIHVu dGllIHRoZW0gaWYKPiA+eW91IHRoaW5rIGl0IGlzIGJldHRlciB0byB1bnRpZSB0aGVtKS4KPiA+ Cj4gPkJ1dCB0aGlzIHRpbWUgdGhlIGV4dHJhIHRoaW5nIGlzIHRoYXQgaSBwcm9wZXJseSBkaXNh YmxlIHJpbmcgaWYgYW55IGVycm9yCj4gPmhhcHBlbnMgd2hpbGUgZXhpc3RpbmcgY29kZSBkb2Vz IG5vdC4KPiAKPiBBbmQgYWdhaW4gdGhhdCBpcyBleGFjdGx5IHdoYXQgd2Ugc2hvdWxkIE5PVCBk by4KPiAKPiBXaGVuIGluaXRpYWxpemF0aW9uIGZhaWxzIHdlIGRvbid0IGtub3cgaW4gd2hpY2gg c3RhdGUgdGhlIHJpbmcgYnVmZmVyIGFuZAo+IG1pY3JvIGVuZ2luZXMgYXJlLCBzbyBmcmVlaW5n IHRoZW0gYW5kIGdpdmluZyB0aGUgc3BhY2UgYmFjayB0byBiZSByZXVzZWQgaW4KPiBjbGVhcmx5 IG5vdCBhIGdvb2QgaWRlYS4KPiAKPiBBbGwgd2Ugc2hvdWxkIGRvIGlzIGNsZWFyaW5nIHRoZSBy ZWFkeSBmbGFnIHdoZW4gc29tZXRoaW5nIGZhaWxzIHRvIHByZXZlbnQKPiB1c2Vyc3BhY2UgZnJv bSBtYWtpbmcgY29tbWFuZCBzdWJtaXNzaW9ucyB0byB0aGUgZmFpbGVkIGVuZ2luZS4KClRoaXMg YmxvY2sgb25seSByZWFkIGZyb20gdGhhdCBtZW1vcnkgISBOZXZlciB3cml0ZSAodW5sZXNzIGl0 IG1vZGlmeSB0aGUgZncKaW4gcGxhY2Ugd2hpY2ggd291bGQgc3VycHJpc2UgbWUpLiBTbyB3aGVu IGJsb2NrIGlzIGluIGJhZCBzdGF0ZXMgaXQgZG9lcyBub3QKbWF0dGVyIHdoYXQgZW5kdXAgdGhl cmUsIGJsb2NrIGlzIG5vdCBwcm9jZXNzaW5nIGFueXRoaW5nLgoKPiA+SSBhbSBub3QgcGFzdGlu ZyB0aGUgaW5pdCBwYXRoIGJ1dCBpdCB0aGUgc2FtZSBsb2dpYywgdHlpbmcgdXZkIGFuZCB2Y2UK PiA+dG9nZXRoZXIgYW5kIHNpbXBsaWZ5aW5nIGVycm9yIGNvZGUgcGF0aC4KPiA+Cj4gPgo+ID4K PiA+PlBsZWFzZSBhbHNvIG5vdGUgdGhhdCBWQ0UvVVZEIGhhcyBkZXBlbmRlbmNpZXMgb24gcG93 ZXIgbWFuYWdlbWVudCwgc28gdGhhdAo+ID4+d2hlbiB0aGV5IGFyZSBvbmNlIGluaXRpYWxpemVk IHRoZXkgc2hvdWxkIE5PVCBiZSB0dXJuZWQgb2ZmIGFnYWluLgo+ID4+Cj4gPj5JIG9ubHkgYnJp ZWZseSBza2ltbWVkIG92ZXIgeW91ciBwYXRjaCwgYnV0IGl0IGFjdHVhbGx5IGxvb2tzIGxpa2Ug dG8gbWUKPiA+PnRoYXQgeW91IGJyb2tlbiB0aGF0IGJ5IHRyeWluZyB0byBjbGVhbnVwIHRoZSBp bml0aWFsaXphdGlvbiByb3V0aW5lLgo+ID5JIGhhdmUgc2VlbiB0aGF0IGJ1dCBhc3N1bWluZyBI ZWlzZW5iZXJncyBkb2VzIG5vdCBnZXQgaW52b2x2ZSwgdGhlbiBnaXZlbgo+ID50aGF0IHRoZSBi bG9jayBpcyBub3QgcmVzcG9uZGluZyB0byByZWdpc3RlciB3cml0ZSBpdCBpcyB1bmxpa2VseSB0 aGF0IHRoaW5nCj4gPndpbGwgd2Ugd29yc2UgaWYgd2UgdHJ5IHRvIGRpc2FibGUgdGhlIGJsb2Nr LiBBbmQgZnJvbSBteSB0ZXN0aW5nIGl0IGRvZXMKPiA+bm90IGltcGFjdCBwb3dlciBtYW5hZ2Vt ZW50LiBNeSBndWVzcyBpcyB0aGF0IHRoZSBibG9jayBrZWVwIHJlcG9ydGluZyBpdCBpcwo+ID5i dXN5IGFuZCB0aGF0IHBvd2VyIGdhdGluZyBhbmQgY2xvY2sgZ2F0aW5nIGFyZSBpbmhpYml0ZWQg YnkgdGhhdC4KPiAKPiBJdCdzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiB0aGF0IGp1c3QgYSBzaW1w bGUgYnVzeSBzaWduYWwuIFRoZSBlbmdpbmVzCj4gYWN0aXZlbHkgY29tbXVuaWNhdGUgd2l0aCB0 aGUgcG93ZXIgbWFuYWdlbWVudCBjb250cm9sbGVyIHRvIHRlbGwgdGhlbSB0aGVpcgo+IG5lZWRz IGFuZCBsaW1pdHMgZm9yIHRoZSBjbG9ja3MgYmFzZWQgb24gdGhlIHdvcmtsb2FkIHRoZXkgaGF2 ZS4KPiAKPiBPbmNlIGluaXRpYWxpemVkIHRoZSBwb3dlciBtYW5hZ2VtZW50IGNvbnRyb2xsZXIg ZXhwZWN0cyB0aGUgVVZEIGFuZCBWQ0UKPiBtaWNyby1jb250cm9sbGVycyB0byBhbnN3ZXIgc3Vj aCByZXF1ZXN0cy4KPiAKPiBGYWlsaW5nIHRvIGRvIHNvIGNhbiBnZXQgeW91IHN0dWNrIGF0IGEg c3BlY2lmaWMgcG93ZXIgbGV2ZWwuCgpZZXMgYW5kIHdoYXQgaSBhbSBzYXlpbmcgaXMgdGhhdCBi bG9jayBpcyBpbiBiYWQgc3RhdGVzIHNvIGVpdGhlciBpdCBpcwphbnN3ZXJpbmcgYWx3YXlzIGJ1 c3kgYW5kIHRodXMgc3RvcCBwb3dlciBsZXZlbCBjaGFuZ2Ugb3IgaXQgaXMgbm90IGFuc3dlcmlu ZwphbmQgcG93ZXIgbGV2ZWwgY2FuIGNoYW5nZS4gU28gdHJ5aW5nIHRvIGRpc2FibGUgdGhlIGJs b2NrIGxlYWRzIHRvIHRoZQpleGFjdCBzYW1lIHNpdHVhdGlvbiwgZWl0aGVyIHRoZSBibG9jayBz aHV0ZG93biBhbmQgcG93ZXIgbGV2ZWwgY2FuIGNoYW5nZQpvciBpdCBkb2VzIG5vdCBhbmQgdGhp bmcgYXJlIGV4YWN0bHkgYXMgaWYgd2UgZGlkIG5vdGhpbmcgIQoKCj4gPlRoZSBvdGhlciB0aGlu ZyBpIGFtIGRvaW5nIG92ZXIgZXhpc3RpbmcgY29kZSBpcyBmcmVlaW5nIG1lbW9yeSBmb3IgdGhl IGZ3Cj4gPmJ1ZmZlci4gSSBkbyBub3QgdGhpbmsgaXQgaXMgYSBiaWcgZGVhbC4gSSBhbSBkb2lu ZyB0aGF0IGJlY2F1c2UgdGhlbiBpIGp1c3QKPiA+ZmxhZyB0aGUgdXZkIGhhcyBkZWFkIChyZGV2 LT5oYXNfdXZkID0gMCkgYW5kIGF2b2lkIHRvIHRyeSB0byByZXN0b3JlIGl0Cj4gPmZvciBuZXh0 IHN1c3BlbmQvcmVzdW1lIGN5Y2xlIG9yIGhpYmVybmF0aW9uIGN5Y2xlLgo+ID4KPiA+U28gYWdh aW4gdGhlIG9ubHkgdGhpbmcgaSBhbSBjaGFuZ2UgaXMgdGhlIGNhc2Ugd2hlcmUgdGhpbmcgZG9l cyBub3Qgd29yay4KPiA+V2l0aCB0aGF0IHBhdGNoIGkgY2FuIGFjdHVhbHkgaGliZXJuYXRlIGxh cHRvcCBhbmQgZ2V0IGJhY2sgYSB3b3JraW5nIGRlc2t0b3AKPiA+bW9kdWxlIHZpZGVvIGRlY29k aW5nL2VuY29kaW5nIG5vIGxvbmdlciB3b3JraW5nLiBJIGNhbGwgdGhhdCBhbiBpbXByb3ZlbWVu dC4KPiAKPiBJdCdzIG5pY2UgdGhhdCBpdCB3b3JrcyBmb3IgeW91IG5vdywgYnV0IG15IGxhcHRv cCBpcyB3b3JraW5nIGZpbmUgd2l0aCBVVkQKPiBhbmQgVkNFIGFzIHdlbGwgYW5kIEkgd291bGQg bGlrZSB0byBrZWVwIGl0IHRoYXQgd2F5LgoKQW5kIG15IHBhdGNoIHdpbGwgbm90IGJyZWFrIHRo YXQsIHRlc3QgaXQgaWYgeW91IGRvIG5vdCBiZWxpZXZlIG1lICEKCgo+IEFzIGZhciBhcyBJIGNh biBzZWUgeW91J3JlIGFjdHVhbGx5IG1lc3NpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHVwIHF1aXRl IGEKPiBiaXQgaGVyZSBpbnN0ZWFkIG9mIGltcHJvdmluZyBpdC4KCkkgYW0gbm90ICEgSSBBTSBN QUtJTkcgSVQgQ0xFQVIgV0hBVCBIQVBQRU5TLiBZRVMgT04gRVJST1IgSSBUUlkgVE8gRElTQUJM RQpUSElORyBCVVQgSUYgQkxPQ0sgSVMgTk9UIEFOU1dFUklORyBUSElTIENBTiBOT1QgTUFLRSBU SElORyBXT1JTRS4KCgo+IFNvIHBsZWFzZSBkZXNjcmliZSBpbiBkZXRhaWwgd2hhdCB0aGUgcHJv YmxlbXMgeW91IGFyZSBzZWVpbmcgYW5kIHdoeQo+IGRpc2FibGluZyBib3RoIFVWRCBhbmQgVkNF IGhlbHBzIHdpdGggdGhlbS4KCkkgc2FpZCBpdCBhYm92ZSBhbHJlYWR5LCBvbiBzZWNvbmQgcGFy dCB3aGVuIHdlIGZhaWxzIHV2ZC92Y2Ugd2UgZG8gbm90CmRpc2FibGUgcmluZyBhbmQgdGhpbmdz IGdvZXMgZnJvbSBiYWQgdG8gd29yc2UuCgo+IEEga2VybmVsIGxvZyBmcm9tIGEgZmFpbGVkIHN1 c3BlbmQvcmVzdW1lIGN5Y2xlIHdvdWxkIGhlbHAgcXVpdGUgYSBiaXQgaGVyZS4KClsgICA2Mi4x MTEwNDJdIFtkcm1dIHJpbmcgdGVzdCBvbiA1IHN1Y2NlZWRlZCBpbiAyIHVzZWNzClsgICA2Mi4x MTEwNDZdIFtkcm1dIFVWRCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuClsgICA2Mi4xMTEwODBd IFtkcm1dIGliIHRlc3Qgb24gcmluZyAwIHN1Y2NlZWRlZCBpbiAwIHVzZWNzClsgICA2Mi4xMTEx MTBdIFtkcm1dIGliIHRlc3Qgb24gcmluZyAxIHN1Y2NlZWRlZCBpbiAwIHVzZWNzClsgICA2Mi4x MTExMzddIFtkcm1dIGliIHRlc3Qgb24gcmluZyAyIHN1Y2NlZWRlZCBpbiAwIHVzZWNzClsgICA2 Mi4xMTExOThdIFtkcm1dIGliIHRlc3Qgb24gcmluZyAzIHN1Y2NlZWRlZCBpbiAwIHVzZWNzClsg ICA2Mi4xMTEyNTddIFtkcm1dIGliIHRlc3Qgb24gcmluZyA0IHN1Y2NlZWRlZCBpbiAwIHVzZWNz ClsgICA2Mi4zMDkzMTJdIHVzYiAxLTc6IHJlc2V0IGhpZ2gtc3BlZWQgVVNCIGRldmljZSBudW1i ZXIgMyB1c2luZyB4aGNpX2hjZApbICAgNjIuMzYyODE5XSBBQ1BJOiBcX1NCXy5QQ0kwLkxQQ0Iu U0lPXy5DT00xOiBBQ1BJX05PVElGWV9CVVNfQ0hFQ0sgZXZlbnQKWyAgIDYyLjM2MjgyNF0gQUNQ STogXF9TQl8uUENJMC5SUDA1OiBBQ1BJX05PVElGWV9CVVNfQ0hFQ0sgZXZlbnQKWyAgIDYyLjM2 MjgyNV0gQUNQSTogXF9TQl8uUENJMC5FSEMxOiBBQ1BJX05PVElGWV9CVVNfQ0hFQ0sgZXZlbnQK WyAgIDYyLjM2MjgyN10gQUNQSTogXF9TQl8uUENJMC5FSEMyOiBBQ1BJX05PVElGWV9CVVNfQ0hF Q0sgZXZlbnQKWyAgIDYyLjYyNjU0Nl0gdXNiIDEtMTI6IHJlc2V0IGZ1bGwtc3BlZWQgVVNCIGRl dmljZSBudW1iZXIgNCB1c2luZyB4aGNpX2hjZApbICAgNjIuNzkzMzczXSBwYXJwb3J0X3BjIDAw OjA4OiBhY3RpdmF0ZWQKWyAgIDYyLjg1ODYwNF0gdHBtX3RpcyAwMDowYzogVFBNIGlzIGRpc2Fi bGVkL2RlYWN0aXZhdGVkICgweDcpClsgICA2My42MjUzMTBdIHBzbW91c2Ugc2VyaW8yOiBhbHBz OiBVbmtub3duIEFMUFMgdG91Y2hwYWQ6IEU3PTEwIDAwIDY0LCBFQz0xMCAwMCA2NApbICAgNjQu ODI2OTE2XSBwc21vdXNlIHNlcmlvMzogc3luYXB0aWNzOiBxdWVyaWVkIG1heCBjb29yZGluYXRl czogeCBbLi41NjYwXSwgeSBbLi40NzMwXQpbICAgNjQuODU4NjUyXSBwc21vdXNlIHNlcmlvMzog c3luYXB0aWNzOiBxdWVyaWVkIG1pbiBjb29yZGluYXRlczogeCBbMTMyNC4uXSwgeSBbMTI0OC4u XQpbICAgNzIuMjg4NDg3XSByYWRlb24gMDAwMDowMTowMC4wOiByaW5nIDUgc3RhbGxlZCBmb3Ig bW9yZSB0aGFuIDEwMDIwbXNlYwpbICAgNzIuMjg4NDg5XSByYWRlb24gMDAwMDowMTowMC4wOiBH UFUgbG9ja3VwIChjdXJyZW50IGZlbmNlIGlkIDB4MDAwMDAwMDAwMDAwMDAwMiBsYXN0IGZlbmNl IGlkIDB4MDAwMDAwMDAwMDAwMDAwNCBvbiByaW5nIDUpClsgICA3Mi4yODg1NzddIFtkcm06dXZk X3YxXzBfaWJfdGVzdCBbcmFkZW9uXV0gKkVSUk9SKiByYWRlb246IGZlbmNlIHdhaXQgZmFpbGVk ICgtMzUpLgpbICAgNzIuMjg4NTk0XSBbZHJtOnJhZGVvbl9pYl9yaW5nX3Rlc3RzIFtyYWRlb25d XSAqRVJST1IqIHJhZGVvbjogZmFpbGVkIHRlc3RpbmcgSUIgb24gcmluZyA1ICgtMzUpLgpbICAg NzIuNDczMDM0XSBbZHJtOnNpX2RwbV9zZXRfcG93ZXJfc3RhdGUgW3JhZGVvbl1dICpFUlJPUiog c2lfc2V0X3N3X3N0YXRlIGZhaWxlZApbICAgNzMuNDUyMTczXSBbZHJtOnJhZGVvbl9kcF9saW5r X3RyYWluIFtyYWRlb25dXSAqRVJST1IqIGRpc3BsYXlwb3J0IGxpbmsgc3RhdHVzIGZhaWxlZApb ICAgNzMuNDUyMTk3XSBbZHJtOnJhZGVvbl9kcF9saW5rX3RyYWluIFtyYWRlb25dXSAqRVJST1Iq IGNsb2NrIHJlY292ZXJ5IGZhaWxlZApbICAgNzQuMjk2NzI4XSBbZHJtOnJhZGVvbl9kcF9saW5r X3RyYWluIFtyYWRlb25dXSAqRVJST1IqIGRpc3BsYXlwb3J0IGxpbmsgc3RhdHVzIGZhaWxlZApb ICAgNzQuMjk2NzQ0XSBbZHJtOnJhZGVvbl9kcF9saW5rX3RyYWluIFtyYWRlb25dXSAqRVJST1Iq IGNsb2NrIHJlY292ZXJ5IGZhaWxlZAoKClNvIGZpcnN0IHBhciBvZiB1dmQgc3VjY2VlZCBidXQg dmNlX3YxXzBfcmVzdW1lKCkgZmFpbHMgYW5kIGFmdGVyIHRoYXQgdXZkIGZhaWxzIHRvbwoodmNl IHRvbykuIEkgZG91YnQgeW91IGNhbiBmaXggdGhhdCB1bnRpbCB5b3UgY2FuIGZpeCB0aGUgZmly bXdhcmUgc2lnbmF0dXJlIGNoZWNrCmlzc3VlLiBXaGF0IGhhcHBlbnMgaXMgdGhhdCBvbiByZXN1 bWUgZnJvbSBoaWJlcm5hdGlvbiB0aGUgZmlyc3Qga2VybmVsIGxvYWQgcmFkZW9uCmFuZCBpbml0 aWFsaXplIHRoZSBHUFUgKHRoaXMgd29yayBwcm9wZXJseSBhbmQgVkNFIGJsb2NrIGlzIGluaXRp YWxpemVkIHByb3Blcmx5KS4KCkJ1dCB0aGVuIGl0IHJlc3VtZSB0aGUgaGliZXJuYXRlZCBrZXJu ZWwgKGtleGVjKSBhbmQgdGhlIHJhZGVvbiByZXN1bWUgY29kZSBwYXRoIGJ5CnJlcHJvZ3JhbW1p bmcgdGhlIG1lbW9yeSBjb25maWd1cmF0aW9uIG9mIHRoZSBHUFUgbWFrZSB0aGUgZncgdW5hY2Nl c3NpYmxlIG9yIGF0CmRpZmZlcmVudCBhZGRyZXNzIGNvbXBhcmUgdG8gZmlyc3QgYm9vdCBrZXJu ZWwgYW5kIHRoaW5nIGZyb20gdGhhdCBwb2ludCB0aGUgdmNlCmJsb2NrIGlzIGluIGJhZCBzdGF0 ZSAoaW1wYWN0aW5nIHRoZSB1dmQgYmxvY2sgYWZhaWN0KS4gVGhpcyB0cmlja2xlIGRvd24gdG8g b3RoZXIKYmxvY2sgbGlrZSBkaXNwbGF5cG9ydCBhbmQgeW91IGVuZHVwIHdpdGggbm8gZGlzcGxh eS4KCkrDqXLDtG1lCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=