From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 3/4] drm/radeon: consolidate uvd/vce initialization, resume and suspend. Date: Wed, 16 Mar 2016 18:06:36 +0100 Message-ID: <56E9929C.60509@amd.com> References: <1458132531-5524-1-git-send-email-jglisse@redhat.com> <56E959BE.7030608@vodafone.de> <56E97974.4050107@amd.com> <20160316155603.GA6483@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0098.outbound.protection.outlook.com [65.55.169.98]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1C9F96E9BE for ; Wed, 16 Mar 2016 17:21:10 +0000 (UTC) In-Reply-To: <20160316155603.GA6483@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jerome Glisse Cc: Alex Deucher , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org QW0gMTYuMDMuMjAxNiB1bSAxNjo1NiBzY2hyaWViIEplcm9tZSBHbGlzc2U6Cj4gT24gV2VkLCBN YXIgMTYsIDIwMTYgYXQgMDQ6MTk6MTZQTSArMDEwMCwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToK Pj4gQW0gMTYuMDMuMjAxNiB1bSAxNTo1OSBzY2hyaWViIEplcm9tZSBHbGlzc2U6Cj4+PiBPbiBX ZWQsIE1hciAxNiwgMjAxNiBhdCAyOjAzIFBNLCBDaHJpc3RpYW4gS8O2bmlnCj4+PiA8ZGVhdGhz aW1wbGVAdm9kYWZvbmUuZGU+IHdyb3RlOgo+Pj4+IEFtIDE2LjAzLjIwMTYgdW0gMTM6NDggc2No cmllYiBKw6lyw7RtZSBHbGlzc2U6Cj4+Pj4+IEZyb206IErDqXJvbWUgR2xpc3NlIDxqZ2xpc3Nl QHJlZGhhdC5jb20+Cj4+Pj4+Cj4+Pj4+IFRoaXMgY29uc29saWRhdGUgdXZkL3ZjZSBpbnRvIGEg Y29tbW9uIHNoYXBlIGZvciBhbGwgZ2VuZXJhdGlvbi4gSXQKPj4+Pj4gYWxzbyBsZXZlcmFnZSB0 aGUgcmRldi0+aGFzX3V2ZCBmbGFncyB0byBrbm93IHdoYXQgaXQgaXMgdXNlbGVzcyB0bwo+Pj4+ PiB0cnkgdG8gcmVzdW1lL3N1c3BlbmQgdXZkL3ZjZSBibG9jay4KPj4+Pj4KPj4+Pj4gVGhlcmUg aXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHdoZW4gdGhlcmUgaXMgbm8gZXJyb3IuIE9uIGVycm9y IHRoZQo+Pj4+PiBkZXZpY2UgZHJpdmVyIHdpbGwgYmVoYXZlIGRpZmZlcmVudGx5IHRoYW4gYmVm b3JlIGFmdGVyIHRoaXMgcGF0Y2guCj4+Pj4+IEl0IHNob3VsZCBub3cgc2FmZWx5IGlnbm9yZSB1 dmQvdmNlIGVycm9ycyBhbmQga2VlcHMgbm9ybWFsIG9wZXJhdGlvbgo+Pj4+PiBvZiBvdGhlcnMg ZW5naW5lLiBUaGlzIGlzIGFuIGltcHJvdmVtZW50IG92ZXIgY3VycmVudCBzaXR1YXRpb24gd2hl cmUKPj4+Pj4gd2UgaGF2ZSBkaWZmZXJlbnQgYmVoYXZpb3IgZGVwZW5kaW5nIG9uIEdQVSBnZW5l cmF0aW9uIGFuZCBvbiB3aGF0Cj4+Pj4+IGZhaWxzLgo+Pj4+Pgo+Pj4+PiBGaW5hbHkgdGhpcyBp cyBhIHByZXBhcmF0b3J5IHN0ZXAgZm9yIGEgcGF0Y2ggd2hpY2ggYWxsb3cgdG8gZGlzYWJsZQo+ Pj4+PiB1dmQvdmNlIGFzIGEgZHJpdmVyIG9wdGlvbi4KPj4+Pj4KPj4+Pj4gVGhpcyBoYXZlIG9u bHkgYmVlbiB0ZXN0ZWQgb24gc291dGhlcm4gaXNsYW5kIHNvIHBsZWFzZSB0ZXN0IGl0IG9uCj4+ Pj4+IG90aGVyIGdlbmVyYXRpb25zIChpIGRvIG5vdCBoYXZlIGhhcmR3YXJlIGhhbmR5IGZvciBu b3cpLgo+Pj4+Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBKw6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VA cmVkaGF0LmNvbT4KPj4+Pj4gQ2M6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1k LmNvbT4KPj4+Pj4gQ2M6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNv bT4KPj4+PiBOQUssIHNraXBwaW5nIFVWRCBhbmQgVkNFIHN1c3BlbmQvcmVzdW1lIHdoZW4gaW5p dGlhbGl6YXRpb24gZmFpbHMgc2hvdWxkCj4+Pj4gYWxyZWFkeSBiZSBpbXBsZW1lbnRlZC4KPj4+ Pgo+Pj4+IFRoZXJlIG1pZ2h0IGJlIHNvbWUgKHF1aXRlIHNvbWUpIGJ1Z3MgaW4gdGhlcmUsIGJ1 dCB0aGF0IGRvZXNuJ3QganVzdGlmeQo+Pj4+IHJld29ya2luZyB0aGUgaW5pdGlhbGl6YXRpb24g b3ZlciBhbGwgZGlmZmVyZW50IGdlbmVyYXRpb25zLiBFc3BlY2lhbGx5Cj4+Pj4gc2luY2UgeW91 IGRvbid0IGhhdmUgaGFyZHdhcmUgdG8gdGVzdCBhbGwgb2YgdGhlbS4KPj4+Pgo+Pj4+IEp1c3Qg bWFrZSBzdXJlIHRoYXQgcmFkZW9uX3V2ZC92Y2VfZmluaSgpIGlzIGNhbGxlZCB3aGVuIHNvbWV0 aGluZyBnb2VzCj4+Pj4gd3JvbmcgYW5kL29yIHRoYXQgdGhlIFVWRC9WQ0UgQk8gaXMgcHJvcGVy bHkgcmVsZWFzZWQuCj4+Pj4KPj4+PiBSZWdhcmRzLAo+Pj4+IENocmlzdGlhbi4KPj4+IEN1cnJl bnQgY29kZSBpcyBhIG1lc3Mgd2hlbiBpdCBjb21lcyB0byBoYW5kbGluZyBlcnJvciByZWxhdGVk IHRvCj4+PiB1dmQvdmNlLiBUaGlzIHBhdGNoIGNvbnNvbGlkYXRlIGNvbnRyb2wgZmxvdyBpbiBz b21ldGhpbmcgZWFzeSB0bwo+Pj4gZm9sbG93LiBZb3UgY2FuIGNoZWNrIHRoYXQgdGhlcmUgaXMg YWJzb2x1bGV0eSBubyBjb250cm9sIGZsb3cgY2hhbmdlCj4+PiBmb3IgdGhlIGNhc2Ugd2hlcmUg dXZkL3ZjZSB3b3JrcyBhbmQgdGh1cyBpdCBkb2VzIG5vdCBicmVhayBhbnl0aGluZwo+Pj4gdGhh dCB3b3Jrcy4gSXQgd2lsbCBvbmx5IGdyYWNlZnVsbHkgZmFpbHMgYW5kIGNsZWFudXAgaWYgdGhp bmdzIGdvCj4+PiB3cm9uZy4gU28gd2hpbGUgaSBoYXZlIG5vdCB0ZXN0ZWQgb24gb3RoZXIgaHcg aSBhbSBjb25maWRlbnQgdGhhdCB0aGlzCj4+PiBkb2VzIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lv bi4KPj4+Cj4+PiBJIHRyaWVkIHRvIGRvIGl0IHdpdGhvdXQgY29uc29saWRhdGlvbiBidXQgaXQg ZW5kZWQgdXAgaW4gYWRkaW5nIGV2ZW4KPj4+IG1vcmUgaWYoKSBsZXZlbHMgdGhhdCBsaW5lIGRp ZCBiZWdpbnMgYWZ0ZXIgODBjb2x1bXMuIFNvIHBsZWFzZQo+Pj4gcmVjb25zaWRlciBiZWNhdXNl IHRoaXMgaXMgYW4gaW1wcm92ZW1lbnQgb3ZlciBleGlzdGluZyBjb2RlLgo+PiBXZWxsIHRoZW4g cGxlYXNlIHBvaW50IG91dCBhdCB0aGUgZXhhbXBsZSBvZiB0aGUgU0kgb3IgQ0lLIGNvZGUgd2hh dCBleGFjdGx5Cj4+IGlzIG1pc3NpbmcgaGVyZS4KPiBHb2luZyBmcm9tIDoKPiAJaWYgKHJkZXYt Pmhhc191dmQpIHsKPiAJCXIgPSB1dmRfdjJfMl9yZXN1bWUocmRldik7Cj4gCQlpZiAoIXIpIHsK PiAJCQlyID0gcmFkZW9uX2ZlbmNlX2RyaXZlcl9zdGFydF9yaW5nKHJkZXYsCj4gCQkJCQkJCSAg IFI2MDBfUklOR19UWVBFX1VWRF9JTkRFWCk7Cj4gCQkJaWYgKHIpCj4gCQkJCWRldl9lcnIocmRl di0+ZGV2LCAiVVZEIGZlbmNlcyBpbml0IGVycm9yICglZCkuXG4iLCByKTsKPiAJCX0KPiAJCWlm IChyKQo+IAkJCXJkZXYtPnJpbmdbUjYwMF9SSU5HX1RZUEVfVVZEX0lOREVYXS5yaW5nX3NpemUg PSAwOwo+IAl9Cj4gCXIgPSByYWRlb25fdmNlX3Jlc3VtZShyZGV2KTsKPiAJaWYgKCFyKSB7Cj4g CQlyID0gdmNlX3YxXzBfcmVzdW1lKHJkZXYpOwo+IAkJaWYgKCFyKQo+IAkJCXIgPSByYWRlb25f ZmVuY2VfZHJpdmVyX3N0YXJ0X3JpbmcocmRldiwKPiAJCQkJCQkJICAgVE5fUklOR19UWVBFX1ZD RTFfSU5ERVgpOwo+IAkJaWYgKCFyKQo+IAkJCXIgPSByYWRlb25fZmVuY2VfZHJpdmVyX3N0YXJ0 X3JpbmcocmRldiwKPiAJCQkJCQkJICAgVE5fUklOR19UWVBFX1ZDRTJfSU5ERVgpOwo+IAl9Cj4g CWlmIChyKSB7Cj4gCQlkZXZfZXJyKHJkZXYtPmRldiwgIlZDRSBpbml0IGVycm9yICglZCkuXG4i LCByKTsKPiAJCXJkZXYtPnJpbmdbVE5fUklOR19UWVBFX1ZDRTFfSU5ERVhdLnJpbmdfc2l6ZSA9 IDA7Cj4gCQlyZGV2LT5yaW5nW1ROX1JJTkdfVFlQRV9WQ0UyX0lOREVYXS5yaW5nX3NpemUgPSAw Owo+IAl9Cj4KPgo+IFRvOgo+IAlyID0gdXZkX3YyXzJfcmVzdW1lKHJkZXYpOwo+IAlpZiAocikK PiAJCWdvdG8gZXJyb3I7Cj4gCXIgPSByYWRlb25fZmVuY2VfZHJpdmVyX3N0YXJ0X3JpbmcocmRl diwgUjYwMF9SSU5HX1RZUEVfVVZEX0lOREVYKTsKPiAJaWYgKHIpCj4gCQlnb3RvIGVycm9yX3V2 ZDsKPiAJciA9IHJhZGVvbl92Y2VfcmVzdW1lKHJkZXYpOwo+IAlpZiAocikKPiAJCWdvdG8gZXJy b3JfdXZkOwo+IAlyID0gdmNlX3YxXzBfcmVzdW1lKHJkZXYpOwo+IAlpZiAocikKPiAJCWdvdG8g ZXJyb3JfdmNlOwo+IAlyID0gcmFkZW9uX2ZlbmNlX2RyaXZlcl9zdGFydF9yaW5nKHJkZXYsIFRO X1JJTkdfVFlQRV9WQ0UxX0lOREVYKTsKPiAJaWYgKHIpCj4gCQlnb3RvIGVycm9yX3ZjZTsKPiAJ ciA9IHJhZGVvbl9mZW5jZV9kcml2ZXJfc3RhcnRfcmluZyhyZGV2LCBUTl9SSU5HX1RZUEVfVkNF Ml9JTkRFWCk7Cj4gCWlmIChyKQo+IAkJZ290byBlcnJvcl92Y2U7Cj4gCXJldHVybjsKPiBlcnJv cl92Y2U6Cj4gCXJhZGVvbl92Y2Vfc3VzcGVuZChyZGV2KTsKPiBlcnJvcl91dmQ6Cj4gCXJhZGVv bl91dmRfc3VzcGVuZChyZGV2KTsKPiBlcnJvcjoKPiAJZGV2X2VycihyZGV2LT5kZXYsICJVVkQv VkNFIHN0YXJ0dXAgZXJyb3IgKCVkKS5cbiIsIHIpOwo+IAkvKiBPbiBlcnJvciBqdXN0IGRpc2Fi bGUgZXZlcnl0aGluZy4gKi8KPiAJcmFkZW9uX3ZjZV9maW5pKHJkZXYpOwo+IAlyYWRlb25fdXZk X2ZpbmkocmRldik7Cj4gCXJkZXYtPnJpbmdbUjYwMF9SSU5HX1RZUEVfVVZEX0lOREVYXS5yaW5n X3NpemUgPSAwOwo+IAlyZGV2LT5yaW5nW1ROX1JJTkdfVFlQRV9WQ0UxX0lOREVYXS5yaW5nX3Np emUgPSAwOwo+IAlyZGV2LT5yaW5nW1ROX1JJTkdfVFlQRV9WQ0UyX0lOREVYXS5yaW5nX3NpemUg PSAwOwoKQW5kIGFzIEkgc2FpZCB0aGF0IGlzIGV4YWN0bHkgd2hhdCB5b3Ugc2hvdWxkIE5PVCBi ZSBkb2luZyBoZXJlLiBPbmNlIAp0aGUgZmlybXdhcmUgaXMgbG9hZGVkIHRoZSBibG9jayBzaG91 bGQgYmUga2VwdCBpbiB0aGF0IHN0YXRlLgoKRnJlZWluZyB0aGUgbWVtb3J5IGFsbG9jYXRlZCBm b3IgdGhlIGZpcm13YXJlIGlzIGFsc28gbm90IGEgZ29vZCBpZGVhIGF0IAphbGwgYmVjYXVzZSB3 ZSBkb24ndCBrbm93IHdobyBleGFjdGx5IGlzIGFjY2Vzc2luZyBpdC4KCj4KPgo+IElzIGxvdCBt b3JlIGNsZWFyIHRvIG1lIHRoYW4gYnVuY2ggb2YgaW50ZXJ0d2luZSBpZi9lbHNlLiBBIGNsZWFy IGVycm9yIHBhdGgKPiBmb3Igd2hpY2ggeW91IGRvIG5vdCBoYXZlIHRvIGp1bXAgdGhyb3VnaCBp ZiBsZXZlbCB0byBzZWUgd2hhdCBnZXQgZXhlY3V0ZWQKPiBvciBub3Qgb24gZXJyb3IuIFRoZSBv bmx5IGRpZmZlcmVuY2UgaXMgdGhhdCBpdCBkb2VzIHRpZSB1dmQgYW5kIHZjZSB0b2dldGhlci4K PiBJIGRpZCB0aGF0IG9uIHB1cnBvc2UgYmVjYXVzZSBvbiB0aGUgaHcgaSBhbSBwbGF5aW5nIHdp dGggdGhlIHZjZSBzZWVtcyB0byBiZQo+IHVzZWxlc3Mgd2hlbiB0aGUgdXZkIGJsb2NrIGZhaWxz IChvcHBvc2l0ZSBzZWVtcyB0byBiZSB0cnVlIHRvbykuIElmIHlvdSB0aGluawo+IHdlIHNob3Vs ZCBzdGlsbCB0cnkgdG8gaW5pdCB2Y2Ugd2hlbiB1dmQgZmFpbHMgb3IgdXZkIHdoZW4gdmNlIGZh aWxzIGkgY2FuCj4gc3BsaXQgdXZkIGFuZCB2Y2UuCgpVVkQgYW5kIFZDRSBhcmUgdHdvIGNvbXBs ZXRlbHkgc2VwYXJhdGUgYmxvY2tzLCB0aGV5IHNob3VsZG4ndCBiZSAKcmVsYXRlZCB0byBlYWNo IG90aGVyIGluIGFueXdheS4KCldoZW4geW91IHNlZSBmYWlsdXJlcyBvZiBib3RoIGF0IHRoZSBz YW1lIHRpbWUgaXQncyByYXRoZXIgdW5saWtlbHkgdGhhdCAKaXQgaXMgYWN0dWFsbHkgcmVsYXRl ZCB0byB0aGVtLgoKPgo+IFRoZSBvdGhlciBkaWZmZXJlbmNlIHdpdGggZXhpc3RpbmcgY29kZSBp cyB0aGF0IGkgZnJlZSByZXNvdXJjZXMgbm9ybWFseSB1c2UKPiB1dmQvdmNlIG9uIGVycm9yIChm cmVlIGZ3IGJ1ZmZlcikuIFRoaXMgaXMganVzdCBtZSB0cnlpbmcgdG8gZnJlZSByZXNvdXJjZQo+ IGVhcmx5IGFuZCBpdCBoYXMgbm8gaW1wYWN0IGFzIGJsb2NrIGFyZSBub3Qgd29ya2luZy4KPgo+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4KPiBTZWNvbmQgcGFydCB3ZSBnbyBmcm9tOgo+ IAlpZiAocmRldi0+aGFzX3V2ZCkgewo+IAkJcmluZyA9ICZyZGV2LT5yaW5nW1I2MDBfUklOR19U WVBFX1VWRF9JTkRFWF07Cj4gCQlpZiAocmluZy0+cmluZ19zaXplKSB7Cj4gCQkJciA9IHJhZGVv bl9yaW5nX2luaXQocmRldiwgcmluZywgcmluZy0+cmluZ19zaXplLCAwLAo+IAkJCQkJICAgICBS QURFT05fQ1BfUEFDS0VUMik7Cj4gCQkJaWYgKCFyKQo+IAkJCQlyID0gdXZkX3YxXzBfaW5pdChy ZGV2KTsKPiAJCQlpZiAocikKPiAJCQkJRFJNX0VSUk9SKCJyYWRlb246IGZhaWxlZCBpbml0aWFs aXppbmcgVVZEICglZCkuXG4iLCByKTsKPiAJCX0KPiAJfQo+IAlyID0gLUVOT0VOVDsKPiAJcmlu ZyA9ICZyZGV2LT5yaW5nW1ROX1JJTkdfVFlQRV9WQ0UxX0lOREVYXTsKPiAJaWYgKHJpbmctPnJp bmdfc2l6ZSkKPiAJCXIgPSByYWRlb25fcmluZ19pbml0KHJkZXYsIHJpbmcsIHJpbmctPnJpbmdf c2l6ZSwgMCwKPiAJCQkJICAgICBWQ0VfQ01EX05PX09QKTsKPiAJcmluZyA9ICZyZGV2LT5yaW5n W1ROX1JJTkdfVFlQRV9WQ0UyX0lOREVYXTsKPiAJaWYgKHJpbmctPnJpbmdfc2l6ZSkKPiAJCXIg PSByYWRlb25fcmluZ19pbml0KHJkZXYsIHJpbmcsIHJpbmctPnJpbmdfc2l6ZSwgMCwKPiAJCQkJ ICAgICBWQ0VfQ01EX05PX09QKTsKPiAJaWYgKCFyKQo+IAkJciA9IHZjZV92MV8wX2luaXQocmRl dik7Cj4gCWVsc2UgaWYgKHIgIT0gLUVOT0VOVCkKPiAJCURSTV9FUlJPUigicmFkZW9uOiBmYWls ZWQgaW5pdGlhbGl6aW5nIFZDRSAoJWQpLlxuIiwgcik7Cj4KPgo+IFRvOgo+IAlyaW5nID0gJnJk ZXYtPnJpbmdbUjYwMF9SSU5HX1RZUEVfVVZEX0lOREVYXTsKPiAJciA9IHJhZGVvbl9yaW5nX2lu aXQocmRldiwgcmluZywgcmluZy0+cmluZ19zaXplLCAwLCBSQURFT05fQ1BfUEFDS0VUMik7Cj4g CWlmIChyKQo+IAkJZ290byBlcnJvcjsKPiAJciA9IHV2ZF92MV8wX2luaXQocmRldik7Cj4gCWlm IChyKQo+IAkJZ290byBlcnJvcl91dmQ7Cj4gCXJpbmcgPSAmcmRldi0+cmluZ1tUTl9SSU5HX1RZ UEVfVkNFMV9JTkRFWF07Cj4gCXIgPSByYWRlb25fcmluZ19pbml0KHJkZXYsIHJpbmcsIHJpbmct PnJpbmdfc2l6ZSwgMCwgVkNFX0NNRF9OT19PUCk7Cj4gCWlmIChyKQo+IAkJZ290byBlcnJvcl92 Y2UxOwo+IAlyaW5nID0gJnJkZXYtPnJpbmdbVE5fUklOR19UWVBFX1ZDRTJfSU5ERVhdOwo+IAly ID0gcmFkZW9uX3JpbmdfaW5pdChyZGV2LCByaW5nLCByaW5nLT5yaW5nX3NpemUsIDAsIFZDRV9D TURfTk9fT1ApOwo+IAlpZiAocikKPiAJCWdvdG8gZXJyb3JfdmNlMjsKPiAJciA9IHZjZV92MV8w X2luaXQocmRldik7Cj4gCWlmIChyKQo+IAkJZ290byBlcnJvcl92Y2U7Cj4gCXJldHVybjsKPiBl cnJvcl92Y2U6Cj4gCXJhZGVvbl9yaW5nX2ZpbmkocmRldiwgJnJkZXYtPnJpbmdbVE5fUklOR19U WVBFX1ZDRTJfSU5ERVhdKTsKPiBlcnJvcl92Y2UyOgo+IAlyYWRlb25fcmluZ19maW5pKHJkZXYs ICZyZGV2LT5yaW5nW1ROX1JJTkdfVFlQRV9WQ0UxX0lOREVYXSk7Cj4gZXJyb3JfdmNlMToKPiAJ dXZkX3YxXzBfZmluaShyZGV2KTsKPiBlcnJvcl91dmQ6Cj4gCXJhZGVvbl9yaW5nX2ZpbmkocmRl diwgJnJkZXYtPnJpbmdbUjYwMF9SSU5HX1RZUEVfVVZEX0lOREVYXSk7Cj4gZXJyb3I6Cj4gCWRl dl9lcnIocmRldi0+ZGV2LCAiVVZEL1ZDRSByZXN1bWUgZXJyb3IgKCVkKS5cbiIsIHIpOwo+IAkv KiBPbiBlcnJvciBqdXN0IGRpc2FibGUgZXZlcnl0aGluZy4gKi8KPiAJcmFkZW9uX3V2ZF9zdXNw ZW5kKHJkZXYpOwo+IAlyYWRlb25fdmNlX3N1c3BlbmQocmRldik7Cj4gCXJhZGVvbl91dmRfZmlu aShyZGV2KTsKPiAJcmFkZW9uX3ZjZV9maW5pKHJkZXYpOwo+IAlyZGV2LT5yaW5nW1I2MDBfUklO R19UWVBFX1VWRF9JTkRFWF0ucmluZ19zaXplID0gMDsKPiAJcmRldi0+cmluZ1tUTl9SSU5HX1RZ UEVfVkNFMV9JTkRFWF0ucmluZ19zaXplID0gMDsKPiAJcmRldi0+cmluZ1tUTl9SSU5HX1RZUEVf VkNFMl9JTkRFWF0ucmluZ19zaXplID0gMDsKPgo+IEFnYWluIGxvdCBzaW1wbGVyIHRvIGZvbGxv dyBjb250cm9sIGZsb3cgdGhhbiB0byBqdW1wIHRocm91Z2ggdmFyaW91cyBsZXZlbAo+IG9mIGlm L2Vsc2UuIEFnYWluIHV2ZCBhbmQgdmNlIHRpZWQgdG9nZXRoZXIgKGFuZCBhZ2FpbiBpIGNhbiB1 bnRpZSB0aGVtIGlmCj4geW91IHRoaW5rIGl0IGlzIGJldHRlciB0byB1bnRpZSB0aGVtKS4KPgo+ IEJ1dCB0aGlzIHRpbWUgdGhlIGV4dHJhIHRoaW5nIGlzIHRoYXQgaSBwcm9wZXJseSBkaXNhYmxl IHJpbmcgaWYgYW55IGVycm9yCj4gaGFwcGVucyB3aGlsZSBleGlzdGluZyBjb2RlIGRvZXMgbm90 LgoKQW5kIGFnYWluIHRoYXQgaXMgZXhhY3RseSB3aGF0IHdlIHNob3VsZCBOT1QgZG8uCgpXaGVu IGluaXRpYWxpemF0aW9uIGZhaWxzIHdlIGRvbid0IGtub3cgaW4gd2hpY2ggc3RhdGUgdGhlIHJp bmcgYnVmZmVyIAphbmQgbWljcm8gZW5naW5lcyBhcmUsIHNvIGZyZWVpbmcgdGhlbSBhbmQgZ2l2 aW5nIHRoZSBzcGFjZSBiYWNrIHRvIGJlIApyZXVzZWQgaW4gY2xlYXJseSBub3QgYSBnb29kIGlk ZWEuCgpBbGwgd2Ugc2hvdWxkIGRvIGlzIGNsZWFyaW5nIHRoZSByZWFkeSBmbGFnIHdoZW4gc29t ZXRoaW5nIGZhaWxzIHRvIApwcmV2ZW50IHVzZXJzcGFjZSBmcm9tIG1ha2luZyBjb21tYW5kIHN1 Ym1pc3Npb25zIHRvIHRoZSBmYWlsZWQgZW5naW5lLgoKPgo+Cj4gSSBhbSBub3QgcGFzdGluZyB0 aGUgaW5pdCBwYXRoIGJ1dCBpdCB0aGUgc2FtZSBsb2dpYywgdHlpbmcgdXZkIGFuZCB2Y2UKPiB0 b2dldGhlciBhbmQgc2ltcGxpZnlpbmcgZXJyb3IgY29kZSBwYXRoLgo+Cj4KPgo+PiBQbGVhc2Ug YWxzbyBub3RlIHRoYXQgVkNFL1VWRCBoYXMgZGVwZW5kZW5jaWVzIG9uIHBvd2VyIG1hbmFnZW1l bnQsIHNvIHRoYXQKPj4gd2hlbiB0aGV5IGFyZSBvbmNlIGluaXRpYWxpemVkIHRoZXkgc2hvdWxk IE5PVCBiZSB0dXJuZWQgb2ZmIGFnYWluLgo+Pgo+PiBJIG9ubHkgYnJpZWZseSBza2ltbWVkIG92 ZXIgeW91ciBwYXRjaCwgYnV0IGl0IGFjdHVhbGx5IGxvb2tzIGxpa2UgdG8gbWUKPj4gdGhhdCB5 b3UgYnJva2VuIHRoYXQgYnkgdHJ5aW5nIHRvIGNsZWFudXAgdGhlIGluaXRpYWxpemF0aW9uIHJv dXRpbmUuCj4gSSBoYXZlIHNlZW4gdGhhdCBidXQgYXNzdW1pbmcgSGVpc2VuYmVyZ3MgZG9lcyBu b3QgZ2V0IGludm9sdmUsIHRoZW4gZ2l2ZW4KPiB0aGF0IHRoZSBibG9jayBpcyBub3QgcmVzcG9u ZGluZyB0byByZWdpc3RlciB3cml0ZSBpdCBpcyB1bmxpa2VseSB0aGF0IHRoaW5nCj4gd2lsbCB3 ZSB3b3JzZSBpZiB3ZSB0cnkgdG8gZGlzYWJsZSB0aGUgYmxvY2suIEFuZCBmcm9tIG15IHRlc3Rp bmcgaXQgZG9lcwo+IG5vdCBpbXBhY3QgcG93ZXIgbWFuYWdlbWVudC4gTXkgZ3Vlc3MgaXMgdGhh dCB0aGUgYmxvY2sga2VlcCByZXBvcnRpbmcgaXQgaXMKPiBidXN5IGFuZCB0aGF0IHBvd2VyIGdh dGluZyBhbmQgY2xvY2sgZ2F0aW5nIGFyZSBpbmhpYml0ZWQgYnkgdGhhdC4KCkl0J3MgbW9yZSBj b21wbGljYXRlZCB0aGFuIHRoYXQganVzdCBhIHNpbXBsZSBidXN5IHNpZ25hbC4gVGhlIGVuZ2lu ZXMgCmFjdGl2ZWx5IGNvbW11bmljYXRlIHdpdGggdGhlIHBvd2VyIG1hbmFnZW1lbnQgY29udHJv bGxlciB0byB0ZWxsIHRoZW0gCnRoZWlyIG5lZWRzIGFuZCBsaW1pdHMgZm9yIHRoZSBjbG9ja3Mg YmFzZWQgb24gdGhlIHdvcmtsb2FkIHRoZXkgaGF2ZS4KCk9uY2UgaW5pdGlhbGl6ZWQgdGhlIHBv d2VyIG1hbmFnZW1lbnQgY29udHJvbGxlciBleHBlY3RzIHRoZSBVVkQgYW5kIFZDRSAKbWljcm8t Y29udHJvbGxlcnMgdG8gYW5zd2VyIHN1Y2ggcmVxdWVzdHMuCgpGYWlsaW5nIHRvIGRvIHNvIGNh biBnZXQgeW91IHN0dWNrIGF0IGEgc3BlY2lmaWMgcG93ZXIgbGV2ZWwuCgo+Cj4gVGhlIG90aGVy IHRoaW5nIGkgYW0gZG9pbmcgb3ZlciBleGlzdGluZyBjb2RlIGlzIGZyZWVpbmcgbWVtb3J5IGZv ciB0aGUgZncKPiBidWZmZXIuIEkgZG8gbm90IHRoaW5rIGl0IGlzIGEgYmlnIGRlYWwuIEkgYW0g ZG9pbmcgdGhhdCBiZWNhdXNlIHRoZW4gaSBqdXN0Cj4gZmxhZyB0aGUgdXZkIGhhcyBkZWFkIChy ZGV2LT5oYXNfdXZkID0gMCkgYW5kIGF2b2lkIHRvIHRyeSB0byByZXN0b3JlIGl0Cj4gZm9yIG5l eHQgc3VzcGVuZC9yZXN1bWUgY3ljbGUgb3IgaGliZXJuYXRpb24gY3ljbGUuCj4KPiBTbyBhZ2Fp biB0aGUgb25seSB0aGluZyBpIGFtIGNoYW5nZSBpcyB0aGUgY2FzZSB3aGVyZSB0aGluZyBkb2Vz IG5vdCB3b3JrLgo+IFdpdGggdGhhdCBwYXRjaCBpIGNhbiBhY3R1YWx5IGhpYmVybmF0ZSBsYXB0 b3AgYW5kIGdldCBiYWNrIGEgd29ya2luZyBkZXNrdG9wCj4gbW9kdWxlIHZpZGVvIGRlY29kaW5n L2VuY29kaW5nIG5vIGxvbmdlciB3b3JraW5nLiBJIGNhbGwgdGhhdCBhbiBpbXByb3ZlbWVudC4K Ckl0J3MgbmljZSB0aGF0IGl0IHdvcmtzIGZvciB5b3Ugbm93LCBidXQgbXkgbGFwdG9wIGlzIHdv cmtpbmcgZmluZSB3aXRoIApVVkQgYW5kIFZDRSBhcyB3ZWxsIGFuZCBJIHdvdWxkIGxpa2UgdG8g a2VlcCBpdCB0aGF0IHdheS4KCkFzIGZhciBhcyBJIGNhbiBzZWUgeW91J3JlIGFjdHVhbGx5IG1l c3NpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHVwIHF1aXRlIAphIGJpdCBoZXJlIGluc3RlYWQgb2Yg aW1wcm92aW5nIGl0LgoKU28gcGxlYXNlIGRlc2NyaWJlIGluIGRldGFpbCB3aGF0IHRoZSBwcm9i bGVtcyB5b3UgYXJlIHNlZWluZyBhbmQgd2h5IApkaXNhYmxpbmcgYm90aCBVVkQgYW5kIFZDRSBo ZWxwcyB3aXRoIHRoZW0uCgpBIGtlcm5lbCBsb2cgZnJvbSBhIGZhaWxlZCBzdXNwZW5kL3Jlc3Vt ZSBjeWNsZSB3b3VsZCBoZWxwIHF1aXRlIGEgYml0IGhlcmUuCgpSZWdhcmRzLApDaHJpc3RpYW4u Cgo+Cj4gSsOpcsO0bWUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=