From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v5 2/4] drm/i915: implement sync_audio_rate callback Date: Mon, 24 Aug 2015 15:53:19 +0300 Message-ID: <20150824125319.GH5176@intel.com> References: <1439880714-40931-1-git-send-email-libin.yang@intel.com> <1439880714-40931-2-git-send-email-libin.yang@intel.com> <20150821151419.GE5176@intel.com> <96A12704CE18D347B625EE2D4A099D196F57D0@SHSMSX103.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 46DBE6E71A for ; Mon, 24 Aug 2015 05:53:38 -0700 (PDT) Content-Disposition: inline In-Reply-To: <96A12704CE18D347B625EE2D4A099D196F57D0@SHSMSX103.ccr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Yang, Libin" Cc: "tiwai@suse.de" , "daniel.vetter@ffwll.ch" , "alsa-devel@alsa-project.org" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBBdWcgMjQsIDIwMTUgYXQgMDI6Mzg6MTRBTSArMDAwMCwgWWFuZywgTGliaW4gd3Jv dGU6Cj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJvbTogVmlsbGUgU3lyasOk bMOkIFttYWlsdG86dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb21dCj4gPiBTZW50OiBGcmlk YXksIEF1Z3VzdCAyMSwgMjAxNSAxMToxNCBQTQo+ID4gVG86IFlhbmcsIExpYmluCj4gPiBDYzog YWxzYS1kZXZlbEBhbHNhLXByb2plY3Qub3JnOyB0aXdhaUBzdXNlLmRlOyBpbnRlbC0KPiA+IGdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g7Cj4gPiBqYW5p Lm5pa3VsYUBsaW51eC5pbnRlbC5jb20KPiA+IFN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4XSBbUEFU Q0ggdjUgMi80XSBkcm0vaTkxNTogaW1wbGVtZW50Cj4gPiBzeW5jX2F1ZGlvX3JhdGUgY2FsbGJh Y2sKPiA+IAo+ID4gT24gVHVlLCBBdWcgMTgsIDIwMTUgYXQgMDI6NTE6NTJQTSArMDgwMCwgbGli aW4ueWFuZ0BpbnRlbC5jb20KPiA+IHdyb3RlOgo+ID4gPiBGcm9tOiBMaWJpbiBZYW5nIDxsaWJp bi55YW5nQGludGVsLmNvbT4KPiA+ID4KPiA+ID4gSERNSSBhdWRpbyBtYXkgbm90IHdvcmsgYXQg c29tZSBmcmVxdWVuY2llcwo+ID4gPiB3aXRoIHRoZSBIVyBwcm92aWRlZCBOL0NUUy4KPiA+ID4K PiA+ID4gVGhpcyBwYXRjaCBzZXRzIHRoZSBwcm9wZXIgTiB2YWx1ZSBmb3IgdGhlCj4gPiA+IGdp dmVuIGF1ZGlvIHNhbXBsZSByYXRlIGF0IHRoZSBpbXBhY3RlZCBmcmVxdWVuY2llcy4KPiA+ID4g QXQgb3RoZXIgZnJlcXVlbmNpZXMsIGl0IHdpbGwgdXNlIHRoZSBOL0NUUyB2YWx1ZQo+ID4gPiB3 aGljaCBIVyBwcm92aWRlcy4KPiA+ID4KPiA+ID4gU2lnbmVkLW9mZi1ieTogTGliaW4gWWFuZyA8 bGliaW4ueWFuZ0BpbnRlbC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXVkaW8uYyB8IDExOQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDExOSBpbnNlcnRpb25zKCspCj4gPiA+Cj4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiA+ID4gaW5kZXggZGMzMmNmNC4u OTZiOTdiZSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVk aW8uYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gPiA+ IEBAIC02OCw2ICs2OCwzMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiA+ID4gIAl7IDE0ODUw MCwgQVVEX0NPTkZJR19QSVhFTF9DTE9DS19IRE1JXzE0ODUwMCB9LAo+ID4gPiAgfTsKPiA+ID4K PiA+ID4gKy8qIEhETUkgTi9DVFMgdGFibGUgKi8KPiA+ID4gKyNkZWZpbmUgVE1EU18yOTdNIDI5 NzAwMAo+ID4gPiArI2RlZmluZSBUTURTXzI5Nk0gRElWX1JPVU5EX1VQKDI5NzAwMCAqIDEwMDAs IDEwMDEpCj4gPiAKPiA+IEkgZG9uJ3QgcmVhbGx5IGxpa2UgdGhlIGRlZmluZXMuCj4gCj4gSSBh Z3JlZSBpdCdzIG5vdCBhIGdvb2QgbmFtZS4gRG8geW91IGhhdmUgc29tZSBzdWdnZXN0aW9ucz8K CkknZCBwcm9iYWJseSBqdXN0IGhhdmUgdXNlZCByYXcgbnVtYmVycyBteXNlbGYuCgo+IAo+ID4g Cj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiA+ID4gKwlpbnQgc2FtcGxlX3JhdGU7Cj4g PiA+ICsJaW50IGNsb2NrOwo+ID4gPiArCWludCBuOwo+ID4gPiArCWludCBjdHM7Cj4gPiA+ICt9 IGF1ZF9uY3RzW10gPSB7Cj4gPiA+ICsJeyA0NDEwMCwgVE1EU18yOTZNLCA0NDU5LCAyMzQzNzUg fSwKPiA+ID4gKwl7IDQ0MTAwLCBUTURTXzI5N00sIDQ3MDQsIDI0NzUwMCB9LAo+ID4gPiArCXsg NDgwMDAsIFRNRFNfMjk2TSwgNTgyNCwgMjgxMjUwIH0sCj4gPiA+ICsJeyA0ODAwMCwgVE1EU18y OTdNLCA1MTIwLCAyNDc1MDAgfSwKPiA+ID4gKwl7IDMyMDAwLCBUTURTXzI5Nk0sIDU4MjQsIDQy MTg3NSB9LAo+ID4gPiArCXsgMzIwMDAsIFRNRFNfMjk3TSwgMzA3MiwgMjIyNzUwIH0sCj4gPiA+ ICsJeyA4ODIwMCwgVE1EU18yOTZNLCA4OTE4LCAyMzQzNzUgfSwKPiA+ID4gKwl7IDg4MjAwLCBU TURTXzI5N00sIDk0MDgsIDI0NzUwMCB9LAo+ID4gPiArCXsgOTYwMDAsIFRNRFNfMjk2TSwgMTE2 NDgsIDI4MTI1MCB9LAo+ID4gPiArCXsgOTYwMDAsIFRNRFNfMjk3TSwgMTAyNDAsIDI0NzUwMCB9 LAo+ID4gPiArCXsgMTc2NDAwLCBUTURTXzI5Nk0sIDE3ODM2LCAyMzQzNzUgfSwKPiA+ID4gKwl7 IDE3NjQwMCwgVE1EU18yOTdNLCAxODgxNiwgMjQ3NTAwIH0sCj4gPiA+ICsJeyA0NDEwMCwgVE1E U18yOTZNLCAyMzI5NiwgMjgxMjUwIH0sCj4gPiA+ICsJeyA0NDEwMCwgVE1EU18yOTdNLCAyMDQ4 MCwgMjQ3NTAwIH0sCj4gPiA+ICt9Owo+ID4gCj4gPiBMYXN0IHR3byBzaG91bGQgYmUgMTkyIGtI ei4gQWxsIHRoZSBvdGhlciB2YWx1ZXMgc2VlbSB0byBtYXRjaCB0aGUKPiA+IHNwZWMuCj4gCj4g T2gsIG15IHR5cG8uIFRoYW5rcyBmb3IgcG9pbnRpbmcgaXQgb3V0Lgo+IAo+ID4gCj4gPiBUaGVz ZSBkbyBhc3N1bWUgOGJwYywgYnV0IGFzIHRoZSBzcGVjIGRvZXNuJ3QgZXZlbiBzcGVjaWZ5IE4v Q1RTCj4gPiB2YWx1ZXMgZm9yIGRlZXAgY29sb3IgbW9kZXMgQCAyOTdNSHosIHNvIEkgc3VwcG9z ZSB0aGUgZXhwZWN0YXRpb25zCj4gPiBpcwo+ID4gdGhhdCB0aGUgbWF4IFRNRFMgY2xvY2sgd2ls bCBuZXZlciBiZSBzbyBoaWdoIGFzIHRvIGFsbG93IHRoZW0uCj4gPiAKPiA+IElmL3doZW4gd2Ug c3RhcnQgdXNpbmcgbWFudWFsIHByb2dyYW1taW5nIGZvciBvdGhlciBUTURTIGNsb2NrCj4gPiBy YXRlcwo+ID4gd2UnbGwgbmVlZCB0byBjb25zaWRlciAxMmJwYyBhcyB3ZWxsLgo+IAo+IFRoZXNl IHZhbHVlcyBhcmUgcmVjb21tZW5kZWQgZnJvbSBIRE1JIHNwZWMuIEl0J3Mgbm90IHJlbGF0ZWQK PiB0byB0aGUgYnBwLiBBbSBJIHdyb25nPyBJJ20gZmluZCB0aGUgdmFsdWUgZnJvbSBIRE1JU3Bl Y2lmaWNhdGlvbgo+IDEuNDogdGFibGUgNy0xLCB0YWJsZSA3LTIgYW5kIHRhYmxlIDctMy4KClRo ZXJlIGFyZSBzZXBhcmF0ZSB0YWJsZXMgZm9yIGRlZXAgY29sb3IgbW9kZXMgaW4gYXBwZW5kaXgg RC4gVGFibGVzCkQtMSB0aHJvdWdoIEQtMyBhcmUgb2YgaW50ZXJlc3QgdG8gdXMgc2luY2Ugd2Ug Y2FuIG9ubHkgZG8gdGhlIDEyYnBjCmRlZXAgY29sb3IgbW9kZS4KCj4gCj4gPiAKPiA+ID4gKwo+ ID4gPiAgLyogZ2V0IEFVRF9DT05GSUdfUElYRUxfQ0xPQ0tfSERNSV8qIHZhbHVlIGZvciBtb2Rl ICovCj4gPiA+ICBzdGF0aWMgdTMyIGF1ZGlvX2NvbmZpZ19oZG1pX3BpeGVsX2Nsb2NrKHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlCj4gPiAqbW9kZSkKPiA+ID4gIHsKPiA+ID4gQEAgLTkwLDYgKzEx NSwzMSBAQCBzdGF0aWMgdTMyCj4gPiBhdWRpb19jb25maWdfaGRtaV9waXhlbF9jbG9jayhzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiA+ID4gIAlyZXR1cm4gaGRtaV9hdWRpb19jbG9j a1tpXS5jb25maWc7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICtzdGF0aWMgaW50IGF1ZGlvX2NvbmZp Z19nZXRfbihzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwgaW50Cj4gPiByYXRlKQo+ID4g Cj4gPiBtb2RlIGNhbiBiZSBjb25zdC4KPiAKPiBPSy4gSSB3aWxsIGNoYW5nZSBpdC4KPiAKPiA+ IAo+ID4gPiArewo+ID4gPiArCWludCBpOwo+ID4gPiArCj4gPiA+ICsJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUoYXVkX25jdHMpOyBpKyspIHsKPiA+ID4gKwkJaWYgKChyYXRlID09IGF1ZF9u Y3RzW2ldLnNhbXBsZV9yYXRlKSAmJgo+ID4gPiArCQkJKG1vZGUtPmNsb2NrID09IGF1ZF9uY3Rz W2ldLmNsb2NrKSkgewo+ID4gPiArCQkJcmV0dXJuIGF1ZF9uY3RzW2ldLm47Cj4gPiA+ICsJCX0K PiA+ID4gKwl9Cj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKy8qIGNo ZWNrIHdoZXRoZXIgTi9DVFMvTSBuZWVkIGJlIHNldCBtYW51YWxseSAqLwo+ID4gPiArc3RhdGlj IGJvb2wgYXVkaW9fcmF0ZV9uZWVkX3Byb2coc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiA+ ICsJCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlCj4gPiAqbW9kZSkKPiA+ID4gK3sKPiA+ID4g KwlpZiAoKChtb2RlLT5jbG9jayA9PSBUTURTXzI5N00pIHx8Cj4gPiA+ICsJCSAobW9kZS0+Y2xv Y2sgPT0gVE1EU18yOTZNKSkgJiYKPiA+ID4gKwkJaW50ZWxfcGlwZV9oYXNfdHlwZShjcnRjLCBJ TlRFTF9PVVRQVVRfSERNSSkpCj4gPiA+ICsJCXJldHVybiB0cnVlOwo+ID4gPiArCWVsc2UKPiA+ ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgYm9vbCBp bnRlbF9lbGRfdXB0b2RhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4g IAkJCSAgICAgICBpbnQgcmVnX2VsZHYsIHVpbnQzMl90IGJpdHNfZWxkdiwKPiA+ID4gIAkJCSAg ICAgICBpbnQgcmVnX2VsZGEsIHVpbnQzMl90IGJpdHNfZWxkYSwKPiA+ID4gQEAgLTUxNCwxMiAr NTY0LDgxIEBAIHN0YXRpYyBpbnQKPiA+IGk5MTVfYXVkaW9fY29tcG9uZW50X2dldF9jZGNsa19m cmVxKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ID4gIAlyZXR1cm4gcmV0Owo+ID4gPiAgfQo+ID4g Pgo+ID4gPiArc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUo c3RydWN0IGRldmljZQo+ID4gKmRldiwKPiA+ID4gKwkJCQkJCWludCBwb3J0LCBpbnQgcmF0ZSkK PiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXZf dG9faTkxNShkZXYpOwo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gZGV2X3By aXYtPmRldjsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcjsKPiA+ ID4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydDsKPiA+ID4gKwlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZTsKPiA+ID4gKwllbnVtIHBpcGUgcGlwZSA9IC0xOwo+ID4gPiArCXUzMiB0bXA7Cj4gPiA+ ICsJaW50IG5fbG93LCBuX3VwLCBuOwo+ID4gPiArCj4gPiA+ICsJLyogMS4gZ2V0IHRoZSBwaXBl ICovCj4gPiA+ICsJZm9yX2VhY2hfaW50ZWxfZW5jb2Rlcihkcm1fZGV2LCBpbnRlbF9lbmNvZGVy KSB7Cj4gPiA+ICsJCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1J KQo+ID4gPiArCQkJY29udGludWU7Cj4gPiA+ICsJCWludGVsX2RpZ19wb3J0ID0gZW5jX3RvX2Rp Z19wb3J0KCZpbnRlbF9lbmNvZGVyLQo+ID4gPmJhc2UpOwo+ID4gPiArCQlpZiAocG9ydCA9PSBp bnRlbF9kaWdfcG9ydC0+cG9ydCkgewo+ID4gPiArCQkJY3J0YyA9IHRvX2ludGVsX2NydGMoaW50 ZWxfZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiA+IAo+ID4gVGhpcyBzb3J0IG9mIHRoaW5nIHdvdWxk IG5lZWQgc29tZSBsb2NraW5nIHRvIHNhZmVseSBzdGFydCBkaWdnaW5nIGF0Cj4gPiB0aGUgbW9k ZXNldCBzdGF0ZS4KPiA+IAo+ID4gSSB3b3VsZCBwcm9iYWJseSBub3QgZG8gdGhhdCwgYW5kIGlu c3RlYWQgYWRkIHNvbWUgbmV3IGxvY2socykgZm9yIHRoaXMuCj4gPiBUaGUgbW9kZXNldCBjb2Rl IHdvdWxkIHRoZW4gZmlsbCBvdXQgc29tZSByZWxldmFudCBpbmZvcm1hdGlvbgo+ID4gcHJvdGVj dGVkCj4gPiBieSB0aGF0IHNhbWUgbG9jaywgYW5kIHRoaXMgZnVuY3Rpb24gY291bGQgdGhlbiBn byBsb29rIGF0IGl0IHdpdGhvdXQKPiA+IGhhdmluZyB0byB3b3JyeSBhYm91dCB0aGUgcmVzdCBv ZiBtb2Rlc2V0IGxvY2tpbmcvc3RhdGUuCj4gCj4gPkZyb20gYXVkaW8gc2lkZSwgdGhlcmUgaXMg bm8gY29tcGV0aXRpb24gd2hlbiBjYWxsaW5nIHRoZSBmdW5jdGlvbiwKPiBJIHRoaW5rLgo+IEZv ciBwcm90ZWN0aW5nIHRoZSBjb21wZXRpdGlvbiBiZXR3ZWVuIGF1ZGlvIGFuZCBnZnggZHJpdmVy LAo+IGl0IHNlZW1zIHdlIG5lZWQgdXNlIHRoZSBsb2NrIGZyb20gZ2Z4IHNpZGUuIERvIHlvdSBo YXZlIHN1Z2dlc3RlZAo+ICBsb2NrIEkgY2FuIHVzZT8KClRvIGRvIGl0IGxpa2UgdGhpcyB3ZSdk IG5lZWQgcHJldHR5IG11Y2ggYWxsIHRoZSBtb2Rlc2V0IGxvY2tzLCB3aGljaAp0byBtZSBmZWVs cyBhIGJpdCB0cm91Ymxlc29tZSBpZiB0aGUgYXVkaW8gZHJpdmVyIGNhbiBjYWxsIHRoaXMgYXQK YW55IHBvaW50LiBTbyBJIHN1Z2dlc3RlZCB0aGF0IHdlIG1heSB3YW50IHRvIGFkZCBzb21lIGtp bmQgb2YgbmV3CmF1ZGlvIGxvY2sgdG8gaTkxNS4KCj4gCj4gPiAKPiA+ID4gKwkJCWlmICghY3J0 Yykgewo+ID4gPiArCQkJCURSTV9ERUJVR19LTVMoIiVzOiBjcnRjIGlzCj4gPiBOVUxMXG4iLCBf X2Z1bmNfXyk7Cj4gPiA+ICsJCQkJY29udGludWU7Cj4gPiA+ICsJCQl9Cj4gPiA+ICsJCQlwaXBl ID0gY3J0Yy0+cGlwZTsKPiA+ID4gKwkJCWJyZWFrOwo+ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4g PiArCj4gPiA+ICsJaWYgKHBpcGUgPT0gSU5WQUxJRF9QSVBFKSB7Cj4gPiA+ICsJCURSTV9ERUJV R19LTVMoIm5vIHBpcGUgZm9yIHRoZSBwb3J0ICVjXG4iLAo+ID4gcG9ydF9uYW1lKHBvcnQpKTsK PiA+ID4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ICsJfQo+ID4gPiArCURSTV9ERUJVR19LTVMo InBpcGUgJWMgY29ubmVjdHMgcG9ydCAlY1xuIiwKPiA+ID4gKwkJCQkgIHBpcGVfbmFtZShwaXBl KSwgcG9ydF9uYW1lKHBvcnQpKTsKPiA+ID4gKwltb2RlID0gJmNydGMtPmNvbmZpZy0+YmFzZS5h ZGp1c3RlZF9tb2RlOwo+ID4gPiArCj4gPiA+ICsJLyogMi4gY2hlY2sgd2hldGhlciB0byBzZXQg dGhlIE4vQ1RTL00gbWFudWFsbHkgb3Igbm90ICovCj4gPiA+ICsJaWYgKCFhdWRpb19yYXRlX25l ZWRfcHJvZyhjcnRjLCBtb2RlKSkgewo+ID4gPiArCQl0bXAgPSBJOTE1X1JFQUQoSFNXX0FVRF9D RkcocGlwZSkpOwo+ID4gPiArCQl0bXAgJj0gfkFVRF9DT05GSUdfTl9QUk9HX0VOQUJMRTsKPiA+ ID4gKwkJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPiA+IAo+ID4gVGhpcyBz dHVmZiB3b3VsZCBuZWVkIHRvIGJlIGFic3RyYWN0ZWQgdG8gd29yayBvbiBwcmUtSFNXIHRvby4K PiAKPiBSaWdodCwgSSBuZWVkIGp1ZGdlIHRoZSBwbGF0Zm9ybSBmaXJzdGx5Lgo+IAo+ID4gCj4g PiA+ICsJCXJldHVybiAwOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCW4gPSBhdWRpb19jb25m aWdfZ2V0X24obW9kZSwgcmF0ZSk7Cj4gPiA+ICsJaWYgKG4gPT0gMCkgewo+ID4gPiArCQlEUk1f REVCVUdfS01TKCJVc2luZyBhdXRvbWF0aWMgbW9kZSBmb3IgTiB2YWx1ZQo+ID4gb24gcG9ydCAl Y1xuIiwKPiA+ID4gKwkJCQkJICBwb3J0X25hbWUocG9ydCkpOwo+ID4gPiArCQl0bXAgPSBJOTE1 X1JFQUQoSFNXX0FVRF9DRkcocGlwZSkpOwo+ID4gPiArCQl0bXAgJj0gfkFVRF9DT05GSUdfTl9Q Uk9HX0VOQUJMRTsKPiA+ID4gKwkJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsK PiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ICsJfQo+ID4gPiArCW5fbG93ID0gbiAmIDB4ZmZmOwo+ ID4gPiArCW5fdXAgPSAobiA+PiAxMikgJiAweGZmOwo+ID4gPiArCj4gPiA+ICsJLyogNC4gc2V0 IHRoZSBOL0NUUy9NICovCj4gPiA+ICsJdG1wID0gSTkxNV9SRUFEKEhTV19BVURfQ0ZHKHBpcGUp KTsKPiA+ID4gKwl0bXAgJj0gfihBVURfQ09ORklHX1VQUEVSX05fTUFTSyB8Cj4gPiBBVURfQ09O RklHX0xPV0VSX05fTUFTSyk7Cj4gPiA+ICsJdG1wIHw9ICgobl91cCA8PCBBVURfQ09ORklHX1VQ UEVSX05fU0hJRlQpIHwKPiA+ID4gKwkJCShuX2xvdyA8PCBBVURfQ09ORklHX0xPV0VSX05fU0hJ RlQpIHwKPiA+ID4gKwkJCUFVRF9DT05GSUdfTl9QUk9HX0VOQUJMRSk7Cj4gPiA+ICsJSTkxNV9X UklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiAwOwo+ ID4gPiArfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfYXVkaW9fY29t cG9uZW50X29wcwo+ID4gaTkxNV9hdWRpb19jb21wb25lbnRfb3BzID0gewo+ID4gPiAgCS5vd25l cgkJPSBUSElTX01PRFVMRSwKPiA+ID4gIAkuZ2V0X3Bvd2VyCT0gaTkxNV9hdWRpb19jb21wb25l bnRfZ2V0X3Bvd2VyLAo+ID4gPiAgCS5wdXRfcG93ZXIJPSBpOTE1X2F1ZGlvX2NvbXBvbmVudF9w dXRfcG93ZXIsCj4gPiA+ICAJLmNvZGVjX3dha2Vfb3ZlcnJpZGUgPQo+ID4gaTkxNV9hdWRpb19j b21wb25lbnRfY29kZWNfd2FrZV9vdmVycmlkZSwKPiA+ID4gIAkuZ2V0X2NkY2xrX2ZyZXEJPSBp OTE1X2F1ZGlvX2NvbXBvbmVudF9nZXRfY2RjbGtfZnJlcSwKPiA+ID4gKwkuc3luY19hdWRpb19y YXRlID0gaTkxNV9hdWRpb19jb21wb25lbnRfc3luY19hdWRpb19yYXRlLAo+ID4gPiAgfTsKPiA+ ID4KPiA+ID4gIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfYmluZChzdHJ1Y3QgZGV2 aWNlICppOTE1X2RldiwKPiA+ID4gLS0KPiA+ID4gMS45LjEKPiA+ID4KPiA+ID4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiA+IGh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiA+ IAo+ID4gLS0KPiA+IFZpbGxlIFN5cmrDpGzDpAo+ID4gSW50ZWwgT1RDCgotLSAKVmlsbGUgU3ly asOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=