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 16:56:04 +0100 Message-ID: <20160316155603.GA6483@redhat.com> References: <1458132531-5524-1-git-send-email-jglisse@redhat.com> <56E959BE.7030608@vodafone.de> <56E97974.4050107@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 D74E26E992 for ; Wed, 16 Mar 2016 15:56:09 +0000 (UTC) Content-Disposition: inline In-Reply-To: <56E97974.4050107@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 T24gV2VkLCBNYXIgMTYsIDIwMTYgYXQgMDQ6MTk6MTZQTSArMDEwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAxNi4wMy4yMDE2IHVtIDE1OjU5IHNjaHJpZWIgSmVyb21lIEdsaXNzZToK PiA+T24gV2VkLCBNYXIgMTYsIDIwMTYgYXQgMjowMyBQTSwgQ2hyaXN0aWFuIEvDtm5pZwo+ID48 ZGVhdGhzaW1wbGVAdm9kYWZvbmUuZGU+IHdyb3RlOgo+ID4+QW0gMTYuMDMuMjAxNiB1bSAxMzo0 OCBzY2hyaWViIErDqXLDtG1lIEdsaXNzZToKPiA+Pj5Gcm9tOiBKw6lyb21lIEdsaXNzZSA8amds aXNzZUByZWRoYXQuY29tPgo+ID4+Pgo+ID4+PlRoaXMgY29uc29saWRhdGUgdXZkL3ZjZSBpbnRv IGEgY29tbW9uIHNoYXBlIGZvciBhbGwgZ2VuZXJhdGlvbi4gSXQKPiA+Pj5hbHNvIGxldmVyYWdl IHRoZSByZGV2LT5oYXNfdXZkIGZsYWdzIHRvIGtub3cgd2hhdCBpdCBpcyB1c2VsZXNzIHRvCj4g Pj4+dHJ5IHRvIHJlc3VtZS9zdXNwZW5kIHV2ZC92Y2UgYmxvY2suCj4gPj4+Cj4gPj4+VGhlcmUg aXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHdoZW4gdGhlcmUgaXMgbm8gZXJyb3IuIE9uIGVycm9y IHRoZQo+ID4+PmRldmljZSBkcml2ZXIgd2lsbCBiZWhhdmUgZGlmZmVyZW50bHkgdGhhbiBiZWZv cmUgYWZ0ZXIgdGhpcyBwYXRjaC4KPiA+Pj5JdCBzaG91bGQgbm93IHNhZmVseSBpZ25vcmUgdXZk L3ZjZSBlcnJvcnMgYW5kIGtlZXBzIG5vcm1hbCBvcGVyYXRpb24KPiA+Pj5vZiBvdGhlcnMgZW5n aW5lLiBUaGlzIGlzIGFuIGltcHJvdmVtZW50IG92ZXIgY3VycmVudCBzaXR1YXRpb24gd2hlcmUK PiA+Pj53ZSBoYXZlIGRpZmZlcmVudCBiZWhhdmlvciBkZXBlbmRpbmcgb24gR1BVIGdlbmVyYXRp b24gYW5kIG9uIHdoYXQKPiA+Pj5mYWlscy4KPiA+Pj4KPiA+Pj5GaW5hbHkgdGhpcyBpcyBhIHBy ZXBhcmF0b3J5IHN0ZXAgZm9yIGEgcGF0Y2ggd2hpY2ggYWxsb3cgdG8gZGlzYWJsZQo+ID4+PnV2 ZC92Y2UgYXMgYSBkcml2ZXIgb3B0aW9uLgo+ID4+Pgo+ID4+PlRoaXMgaGF2ZSBvbmx5IGJlZW4g dGVzdGVkIG9uIHNvdXRoZXJuIGlzbGFuZCBzbyBwbGVhc2UgdGVzdCBpdCBvbgo+ID4+Pm90aGVy IGdlbmVyYXRpb25zIChpIGRvIG5vdCBoYXZlIGhhcmR3YXJlIGhhbmR5IGZvciBub3cpLgo+ID4+ Pgo+ID4+PlNpZ25lZC1vZmYtYnk6IErDqXLDtG1lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29t Pgo+ID4+PkNjOiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Cj4gPj4+ Q2M6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiA+Pgo+ID4+ TkFLLCBza2lwcGluZyBVVkQgYW5kIFZDRSBzdXNwZW5kL3Jlc3VtZSB3aGVuIGluaXRpYWxpemF0 aW9uIGZhaWxzIHNob3VsZAo+ID4+YWxyZWFkeSBiZSBpbXBsZW1lbnRlZC4KPiA+Pgo+ID4+VGhl cmUgbWlnaHQgYmUgc29tZSAocXVpdGUgc29tZSkgYnVncyBpbiB0aGVyZSwgYnV0IHRoYXQgZG9l c24ndCBqdXN0aWZ5Cj4gPj5yZXdvcmtpbmcgdGhlIGluaXRpYWxpemF0aW9uIG92ZXIgYWxsIGRp ZmZlcmVudCBnZW5lcmF0aW9ucy4gRXNwZWNpYWxseQo+ID4+c2luY2UgeW91IGRvbid0IGhhdmUg aGFyZHdhcmUgdG8gdGVzdCBhbGwgb2YgdGhlbS4KPiA+Pgo+ID4+SnVzdCBtYWtlIHN1cmUgdGhh dCByYWRlb25fdXZkL3ZjZV9maW5pKCkgaXMgY2FsbGVkIHdoZW4gc29tZXRoaW5nIGdvZXMKPiA+ Pndyb25nIGFuZC9vciB0aGF0IHRoZSBVVkQvVkNFIEJPIGlzIHByb3Blcmx5IHJlbGVhc2VkLgo+ ID4+Cj4gPj5SZWdhcmRzLAo+ID4+Q2hyaXN0aWFuLgo+ID5DdXJyZW50IGNvZGUgaXMgYSBtZXNz IHdoZW4gaXQgY29tZXMgdG8gaGFuZGxpbmcgZXJyb3IgcmVsYXRlZCB0bwo+ID51dmQvdmNlLiBU aGlzIHBhdGNoIGNvbnNvbGlkYXRlIGNvbnRyb2wgZmxvdyBpbiBzb21ldGhpbmcgZWFzeSB0bwo+ ID5mb2xsb3cuIFlvdSBjYW4gY2hlY2sgdGhhdCB0aGVyZSBpcyBhYnNvbHVsZXR5IG5vIGNvbnRy b2wgZmxvdyBjaGFuZ2UKPiA+Zm9yIHRoZSBjYXNlIHdoZXJlIHV2ZC92Y2Ugd29ya3MgYW5kIHRo dXMgaXQgZG9lcyBub3QgYnJlYWsgYW55dGhpbmcKPiA+dGhhdCB3b3Jrcy4gSXQgd2lsbCBvbmx5 IGdyYWNlZnVsbHkgZmFpbHMgYW5kIGNsZWFudXAgaWYgdGhpbmdzIGdvCj4gPndyb25nLiBTbyB3 aGlsZSBpIGhhdmUgbm90IHRlc3RlZCBvbiBvdGhlciBodyBpIGFtIGNvbmZpZGVudCB0aGF0IHRo aXMKPiA+ZG9lcyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb24uCj4gPgo+ID5JIHRyaWVkIHRvIGRv IGl0IHdpdGhvdXQgY29uc29saWRhdGlvbiBidXQgaXQgZW5kZWQgdXAgaW4gYWRkaW5nIGV2ZW4K PiA+bW9yZSBpZigpIGxldmVscyB0aGF0IGxpbmUgZGlkIGJlZ2lucyBhZnRlciA4MGNvbHVtcy4g U28gcGxlYXNlCj4gPnJlY29uc2lkZXIgYmVjYXVzZSB0aGlzIGlzIGFuIGltcHJvdmVtZW50IG92 ZXIgZXhpc3RpbmcgY29kZS4KPiAKPiBXZWxsIHRoZW4gcGxlYXNlIHBvaW50IG91dCBhdCB0aGUg ZXhhbXBsZSBvZiB0aGUgU0kgb3IgQ0lLIGNvZGUgd2hhdCBleGFjdGx5Cj4gaXMgbWlzc2luZyBo ZXJlLgoKR29pbmcgZnJvbSA6CglpZiAocmRldi0+aGFzX3V2ZCkgewoJCXIgPSB1dmRfdjJfMl9y ZXN1bWUocmRldik7CgkJaWYgKCFyKSB7CgkJCXIgPSByYWRlb25fZmVuY2VfZHJpdmVyX3N0YXJ0 X3JpbmcocmRldiwKCQkJCQkJCSAgIFI2MDBfUklOR19UWVBFX1VWRF9JTkRFWCk7CgkJCWlmIChy KQoJCQkJZGV2X2VycihyZGV2LT5kZXYsICJVVkQgZmVuY2VzIGluaXQgZXJyb3IgKCVkKS5cbiIs IHIpOwoJCX0KCQlpZiAocikKCQkJcmRldi0+cmluZ1tSNjAwX1JJTkdfVFlQRV9VVkRfSU5ERVhd LnJpbmdfc2l6ZSA9IDA7Cgl9CglyID0gcmFkZW9uX3ZjZV9yZXN1bWUocmRldik7CglpZiAoIXIp IHsKCQlyID0gdmNlX3YxXzBfcmVzdW1lKHJkZXYpOwoJCWlmICghcikKCQkJciA9IHJhZGVvbl9m ZW5jZV9kcml2ZXJfc3RhcnRfcmluZyhyZGV2LAoJCQkJCQkJICAgVE5fUklOR19UWVBFX1ZDRTFf SU5ERVgpOwoJCWlmICghcikKCQkJciA9IHJhZGVvbl9mZW5jZV9kcml2ZXJfc3RhcnRfcmluZyhy ZGV2LAoJCQkJCQkJICAgVE5fUklOR19UWVBFX1ZDRTJfSU5ERVgpOwoJfQoJaWYgKHIpIHsKCQlk ZXZfZXJyKHJkZXYtPmRldiwgIlZDRSBpbml0IGVycm9yICglZCkuXG4iLCByKTsKCQlyZGV2LT5y aW5nW1ROX1JJTkdfVFlQRV9WQ0UxX0lOREVYXS5yaW5nX3NpemUgPSAwOwoJCXJkZXYtPnJpbmdb VE5fUklOR19UWVBFX1ZDRTJfSU5ERVhdLnJpbmdfc2l6ZSA9IDA7Cgl9CgoKVG86CglyID0gdXZk X3YyXzJfcmVzdW1lKHJkZXYpOwoJaWYgKHIpCgkJZ290byBlcnJvcjsKCXIgPSByYWRlb25fZmVu Y2VfZHJpdmVyX3N0YXJ0X3JpbmcocmRldiwgUjYwMF9SSU5HX1RZUEVfVVZEX0lOREVYKTsKCWlm IChyKQoJCWdvdG8gZXJyb3JfdXZkOwoJciA9IHJhZGVvbl92Y2VfcmVzdW1lKHJkZXYpOwoJaWYg KHIpCgkJZ290byBlcnJvcl91dmQ7CglyID0gdmNlX3YxXzBfcmVzdW1lKHJkZXYpOwoJaWYgKHIp CgkJZ290byBlcnJvcl92Y2U7CglyID0gcmFkZW9uX2ZlbmNlX2RyaXZlcl9zdGFydF9yaW5nKHJk ZXYsIFROX1JJTkdfVFlQRV9WQ0UxX0lOREVYKTsKCWlmIChyKQoJCWdvdG8gZXJyb3JfdmNlOwoJ ciA9IHJhZGVvbl9mZW5jZV9kcml2ZXJfc3RhcnRfcmluZyhyZGV2LCBUTl9SSU5HX1RZUEVfVkNF Ml9JTkRFWCk7CglpZiAocikKCQlnb3RvIGVycm9yX3ZjZTsKCXJldHVybjsKZXJyb3JfdmNlOgoJ cmFkZW9uX3ZjZV9zdXNwZW5kKHJkZXYpOwplcnJvcl91dmQ6CglyYWRlb25fdXZkX3N1c3BlbmQo cmRldik7CmVycm9yOgoJZGV2X2VycihyZGV2LT5kZXYsICJVVkQvVkNFIHN0YXJ0dXAgZXJyb3Ig KCVkKS5cbiIsIHIpOwoJLyogT24gZXJyb3IganVzdCBkaXNhYmxlIGV2ZXJ5dGhpbmcuICovCgly YWRlb25fdmNlX2ZpbmkocmRldik7CglyYWRlb25fdXZkX2ZpbmkocmRldik7CglyZGV2LT5yaW5n W1I2MDBfUklOR19UWVBFX1VWRF9JTkRFWF0ucmluZ19zaXplID0gMDsKCXJkZXYtPnJpbmdbVE5f UklOR19UWVBFX1ZDRTFfSU5ERVhdLnJpbmdfc2l6ZSA9IDA7CglyZGV2LT5yaW5nW1ROX1JJTkdf VFlQRV9WQ0UyX0lOREVYXS5yaW5nX3NpemUgPSAwOwoKCklzIGxvdCBtb3JlIGNsZWFyIHRvIG1l IHRoYW4gYnVuY2ggb2YgaW50ZXJ0d2luZSBpZi9lbHNlLiBBIGNsZWFyIGVycm9yIHBhdGgKZm9y IHdoaWNoIHlvdSBkbyBub3QgaGF2ZSB0byBqdW1wIHRocm91Z2ggaWYgbGV2ZWwgdG8gc2VlIHdo YXQgZ2V0IGV4ZWN1dGVkCm9yIG5vdCBvbiBlcnJvci4gVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0 aGF0IGl0IGRvZXMgdGllIHV2ZCBhbmQgdmNlIHRvZ2V0aGVyLgpJIGRpZCB0aGF0IG9uIHB1cnBv c2UgYmVjYXVzZSBvbiB0aGUgaHcgaSBhbSBwbGF5aW5nIHdpdGggdGhlIHZjZSBzZWVtcyB0byBi ZQp1c2VsZXNzIHdoZW4gdGhlIHV2ZCBibG9jayBmYWlscyAob3Bwb3NpdGUgc2VlbXMgdG8gYmUg dHJ1ZSB0b28pLiBJZiB5b3UgdGhpbmsKd2Ugc2hvdWxkIHN0aWxsIHRyeSB0byBpbml0IHZjZSB3 aGVuIHV2ZCBmYWlscyBvciB1dmQgd2hlbiB2Y2UgZmFpbHMgaSBjYW4Kc3BsaXQgdXZkIGFuZCB2 Y2UuCgpUaGUgb3RoZXIgZGlmZmVyZW5jZSB3aXRoIGV4aXN0aW5nIGNvZGUgaXMgdGhhdCBpIGZy ZWUgcmVzb3VyY2VzIG5vcm1hbHkgdXNlCnV2ZC92Y2Ugb24gZXJyb3IgKGZyZWUgZncgYnVmZmVy KS4gVGhpcyBpcyBqdXN0IG1lIHRyeWluZyB0byBmcmVlIHJlc291cmNlCmVhcmx5IGFuZCBpdCBo YXMgbm8gaW1wYWN0IGFzIGJsb2NrIGFyZSBub3Qgd29ya2luZy4KCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCgpTZWNvbmQgcGFydCB3ZSBnbyBmcm9tOgoJaWYgKHJkZXYtPmhhc191dmQpIHsK CQlyaW5nID0gJnJkZXYtPnJpbmdbUjYwMF9SSU5HX1RZUEVfVVZEX0lOREVYXTsKCQlpZiAocmlu Zy0+cmluZ19zaXplKSB7CgkJCXIgPSByYWRlb25fcmluZ19pbml0KHJkZXYsIHJpbmcsIHJpbmct PnJpbmdfc2l6ZSwgMCwKCQkJCQkgICAgIFJBREVPTl9DUF9QQUNLRVQyKTsKCQkJaWYgKCFyKQoJ CQkJciA9IHV2ZF92MV8wX2luaXQocmRldik7CgkJCWlmIChyKQoJCQkJRFJNX0VSUk9SKCJyYWRl b246IGZhaWxlZCBpbml0aWFsaXppbmcgVVZEICglZCkuXG4iLCByKTsKCQl9Cgl9CglyID0gLUVO T0VOVDsKCXJpbmcgPSAmcmRldi0+cmluZ1tUTl9SSU5HX1RZUEVfVkNFMV9JTkRFWF07CglpZiAo cmluZy0+cmluZ19zaXplKQoJCXIgPSByYWRlb25fcmluZ19pbml0KHJkZXYsIHJpbmcsIHJpbmct PnJpbmdfc2l6ZSwgMCwKCQkJCSAgICAgVkNFX0NNRF9OT19PUCk7CglyaW5nID0gJnJkZXYtPnJp bmdbVE5fUklOR19UWVBFX1ZDRTJfSU5ERVhdOwoJaWYgKHJpbmctPnJpbmdfc2l6ZSkKCQlyID0g cmFkZW9uX3JpbmdfaW5pdChyZGV2LCByaW5nLCByaW5nLT5yaW5nX3NpemUsIDAsCgkJCQkgICAg IFZDRV9DTURfTk9fT1ApOwoJaWYgKCFyKQoJCXIgPSB2Y2VfdjFfMF9pbml0KHJkZXYpOwoJZWxz ZSBpZiAociAhPSAtRU5PRU5UKQoJCURSTV9FUlJPUigicmFkZW9uOiBmYWlsZWQgaW5pdGlhbGl6 aW5nIFZDRSAoJWQpLlxuIiwgcik7CgoKVG86CglyaW5nID0gJnJkZXYtPnJpbmdbUjYwMF9SSU5H X1RZUEVfVVZEX0lOREVYXTsKCXIgPSByYWRlb25fcmluZ19pbml0KHJkZXYsIHJpbmcsIHJpbmct PnJpbmdfc2l6ZSwgMCwgUkFERU9OX0NQX1BBQ0tFVDIpOwoJaWYgKHIpCgkJZ290byBlcnJvcjsK CXIgPSB1dmRfdjFfMF9pbml0KHJkZXYpOwoJaWYgKHIpCgkJZ290byBlcnJvcl91dmQ7CglyaW5n ID0gJnJkZXYtPnJpbmdbVE5fUklOR19UWVBFX1ZDRTFfSU5ERVhdOwoJciA9IHJhZGVvbl9yaW5n X2luaXQocmRldiwgcmluZywgcmluZy0+cmluZ19zaXplLCAwLCBWQ0VfQ01EX05PX09QKTsKCWlm IChyKQoJCWdvdG8gZXJyb3JfdmNlMTsKCXJpbmcgPSAmcmRldi0+cmluZ1tUTl9SSU5HX1RZUEVf VkNFMl9JTkRFWF07CglyID0gcmFkZW9uX3JpbmdfaW5pdChyZGV2LCByaW5nLCByaW5nLT5yaW5n X3NpemUsIDAsIFZDRV9DTURfTk9fT1ApOwoJaWYgKHIpCgkJZ290byBlcnJvcl92Y2UyOwoJciA9 IHZjZV92MV8wX2luaXQocmRldik7CglpZiAocikKCQlnb3RvIGVycm9yX3ZjZTsKCXJldHVybjsK ZXJyb3JfdmNlOgoJcmFkZW9uX3JpbmdfZmluaShyZGV2LCAmcmRldi0+cmluZ1tUTl9SSU5HX1RZ UEVfVkNFMl9JTkRFWF0pOwplcnJvcl92Y2UyOgoJcmFkZW9uX3JpbmdfZmluaShyZGV2LCAmcmRl di0+cmluZ1tUTl9SSU5HX1RZUEVfVkNFMV9JTkRFWF0pOwplcnJvcl92Y2UxOgoJdXZkX3YxXzBf ZmluaShyZGV2KTsKZXJyb3JfdXZkOgoJcmFkZW9uX3JpbmdfZmluaShyZGV2LCAmcmRldi0+cmlu Z1tSNjAwX1JJTkdfVFlQRV9VVkRfSU5ERVhdKTsKZXJyb3I6CglkZXZfZXJyKHJkZXYtPmRldiwg IlVWRC9WQ0UgcmVzdW1lIGVycm9yICglZCkuXG4iLCByKTsKCS8qIE9uIGVycm9yIGp1c3QgZGlz YWJsZSBldmVyeXRoaW5nLiAqLwoJcmFkZW9uX3V2ZF9zdXNwZW5kKHJkZXYpOwoJcmFkZW9uX3Zj ZV9zdXNwZW5kKHJkZXYpOwoJcmFkZW9uX3V2ZF9maW5pKHJkZXYpOwoJcmFkZW9uX3ZjZV9maW5p KHJkZXYpOwoJcmRldi0+cmluZ1tSNjAwX1JJTkdfVFlQRV9VVkRfSU5ERVhdLnJpbmdfc2l6ZSA9 IDA7CglyZGV2LT5yaW5nW1ROX1JJTkdfVFlQRV9WQ0UxX0lOREVYXS5yaW5nX3NpemUgPSAwOwoJ cmRldi0+cmluZ1tUTl9SSU5HX1RZUEVfVkNFMl9JTkRFWF0ucmluZ19zaXplID0gMDsKCkFnYWlu IGxvdCBzaW1wbGVyIHRvIGZvbGxvdyBjb250cm9sIGZsb3cgdGhhbiB0byBqdW1wIHRocm91Z2gg dmFyaW91cyBsZXZlbApvZiBpZi9lbHNlLiBBZ2FpbiB1dmQgYW5kIHZjZSB0aWVkIHRvZ2V0aGVy IChhbmQgYWdhaW4gaSBjYW4gdW50aWUgdGhlbSBpZgp5b3UgdGhpbmsgaXQgaXMgYmV0dGVyIHRv IHVudGllIHRoZW0pLgoKQnV0IHRoaXMgdGltZSB0aGUgZXh0cmEgdGhpbmcgaXMgdGhhdCBpIHBy b3Blcmx5IGRpc2FibGUgcmluZyBpZiBhbnkgZXJyb3IKaGFwcGVucyB3aGlsZSBleGlzdGluZyBj b2RlIGRvZXMgbm90LgoKCkkgYW0gbm90IHBhc3RpbmcgdGhlIGluaXQgcGF0aCBidXQgaXQgdGhl IHNhbWUgbG9naWMsIHR5aW5nIHV2ZCBhbmQgdmNlCnRvZ2V0aGVyIGFuZCBzaW1wbGlmeWluZyBl cnJvciBjb2RlIHBhdGguCgoKCj4gCj4gUGxlYXNlIGFsc28gbm90ZSB0aGF0IFZDRS9VVkQgaGFz IGRlcGVuZGVuY2llcyBvbiBwb3dlciBtYW5hZ2VtZW50LCBzbyB0aGF0Cj4gd2hlbiB0aGV5IGFy ZSBvbmNlIGluaXRpYWxpemVkIHRoZXkgc2hvdWxkIE5PVCBiZSB0dXJuZWQgb2ZmIGFnYWluLgo+ Cj4gSSBvbmx5IGJyaWVmbHkgc2tpbW1lZCBvdmVyIHlvdXIgcGF0Y2gsIGJ1dCBpdCBhY3R1YWxs eSBsb29rcyBsaWtlIHRvIG1lCj4gdGhhdCB5b3UgYnJva2VuIHRoYXQgYnkgdHJ5aW5nIHRvIGNs ZWFudXAgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUuCgpJIGhhdmUgc2VlbiB0aGF0IGJ1dCBh c3N1bWluZyBIZWlzZW5iZXJncyBkb2VzIG5vdCBnZXQgaW52b2x2ZSwgdGhlbiBnaXZlbgp0aGF0 IHRoZSBibG9jayBpcyBub3QgcmVzcG9uZGluZyB0byByZWdpc3RlciB3cml0ZSBpdCBpcyB1bmxp a2VseSB0aGF0IHRoaW5nCndpbGwgd2Ugd29yc2UgaWYgd2UgdHJ5IHRvIGRpc2FibGUgdGhlIGJs b2NrLiBBbmQgZnJvbSBteSB0ZXN0aW5nIGl0IGRvZXMKbm90IGltcGFjdCBwb3dlciBtYW5hZ2Vt ZW50LiBNeSBndWVzcyBpcyB0aGF0IHRoZSBibG9jayBrZWVwIHJlcG9ydGluZyBpdCBpcwpidXN5 IGFuZCB0aGF0IHBvd2VyIGdhdGluZyBhbmQgY2xvY2sgZ2F0aW5nIGFyZSBpbmhpYml0ZWQgYnkg dGhhdC4KClRoZSBvdGhlciB0aGluZyBpIGFtIGRvaW5nIG92ZXIgZXhpc3RpbmcgY29kZSBpcyBm cmVlaW5nIG1lbW9yeSBmb3IgdGhlIGZ3CmJ1ZmZlci4gSSBkbyBub3QgdGhpbmsgaXQgaXMgYSBi aWcgZGVhbC4gSSBhbSBkb2luZyB0aGF0IGJlY2F1c2UgdGhlbiBpIGp1c3QKZmxhZyB0aGUgdXZk IGhhcyBkZWFkIChyZGV2LT5oYXNfdXZkID0gMCkgYW5kIGF2b2lkIHRvIHRyeSB0byByZXN0b3Jl IGl0CmZvciBuZXh0IHN1c3BlbmQvcmVzdW1lIGN5Y2xlIG9yIGhpYmVybmF0aW9uIGN5Y2xlLgoK U28gYWdhaW4gdGhlIG9ubHkgdGhpbmcgaSBhbSBjaGFuZ2UgaXMgdGhlIGNhc2Ugd2hlcmUgdGhp bmcgZG9lcyBub3Qgd29yay4KV2l0aCB0aGF0IHBhdGNoIGkgY2FuIGFjdHVhbHkgaGliZXJuYXRl IGxhcHRvcCBhbmQgZ2V0IGJhY2sgYSB3b3JraW5nIGRlc2t0b3AKbW9kdWxlIHZpZGVvIGRlY29k aW5nL2VuY29kaW5nIG5vIGxvbmdlciB3b3JraW5nLiBJIGNhbGwgdGhhdCBhbiBpbXByb3ZlbWVu dC4KCkrDqXLDtG1lCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=