From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v6 2/4] drm/i915: implement sync_audio_rate callback Date: Wed, 02 Sep 2015 11:42:21 +0300 Message-ID: <87y4gp2owi.fsf@intel.com> References: <1441174301-144177-1-git-send-email-libin.yang@intel.com> <1441174301-144177-2-git-send-email-libin.yang@intel.com> <87613t45s7.fsf@intel.com> <96A12704CE18D347B625EE2D4A099D196F877D@SHSMSX103.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id B30F67A013 for ; Wed, 2 Sep 2015 01:39:25 -0700 (PDT) In-Reply-To: <96A12704CE18D347B625EE2D4A099D196F877D@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" , "alsa-devel@alsa-project.org" , "tiwai@suse.de" , "intel-gfx@lists.freedesktop.org" , "daniel.vetter@ffwll.ch" , "ville.syrjala@linux.intel.com" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAwMiBTZXAgMjAxNSwgIllhbmcsIExpYmluIiA8bGliaW4ueWFuZ0BpbnRlbC5jb20+ IHdyb3RlOgo+IEhpIEphbmksCj4KPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4gRnJv bTogSmFuaSBOaWt1bGEgW21haWx0bzpqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb21dCj4+IFNl bnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDAyLCAyMDE1IDM6NTIgUE0KPj4gVG86IFlhbmcsIExp YmluOyBhbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmc7IHRpd2FpQHN1c2UuZGU7IGludGVsLQo+ PiBnZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBkYW5pZWwudmV0dGVyQGZmd2xsLmNoOwo+PiB2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbQo+PiBDYzogWWFuZywgTGliaW4KPj4gU3ViamVj dDogUmU6IFtQQVRDSCB2NiAyLzRdIGRybS9pOTE1OiBpbXBsZW1lbnQgc3luY19hdWRpb19yYXRl Cj4+IGNhbGxiYWNrCj4+IAo+PiBPbiBXZWQsIDAyIFNlcCAyMDE1LCBsaWJpbi55YW5nQGludGVs LmNvbSB3cm90ZToKPj4gPiBGcm9tOiBMaWJpbiBZYW5nIDxsaWJpbi55YW5nQGludGVsLmNvbT4K Pj4gPgo+PiA+IEhETUkgYXVkaW8gbWF5IG5vdCB3b3JrIGF0IHNvbWUgZnJlcXVlbmNpZXMKPj4g PiB3aXRoIHRoZSBIVyBwcm92aWRlZCBOL0NUUy4KPj4gPgo+PiA+IFRoaXMgcGF0Y2ggc2V0cyB0 aGUgcHJvcGVyIE4gdmFsdWUgZm9yIHRoZQo+PiA+IGdpdmVuIGF1ZGlvIHNhbXBsZSByYXRlIGF0 IHRoZSBpbXBhY3RlZCBmcmVxdWVuY2llcy4KPj4gPiBBdCBvdGhlciBmcmVxdWVuY2llcywgaXQg d2lsbCB1c2UgdGhlIE4vQ1RTIHZhbHVlCj4+ID4gd2hpY2ggSFcgcHJvdmlkZXMuCj4+ID4KPj4g PiBTaWduZWQtb2ZmLWJ5OiBMaWJpbiBZYW5nIDxsaWJpbi55YW5nQGludGVsLmNvbT4KPj4gCj4+ IE9rYXksIHNvIHRoZXJlIGFyZSBhIG51bWJlciBvZiBxdWVzdGlvbnMgYW5kIGNvbW1lbnRzIHRo aXMgcGF0Y2ggc3RpbGwKPj4gcmFpc2VzLiBQbGVhc2UgZmluZCB0aGVtIGlubGluZS4KPj4gCj4+ ICpIb3dldmVyKiwgd2Ugc2hvdWxkIHJlYWxseSBnZXQgdGhpcyBmaW5hbGx5IG1vdmluZyBmb3J3 YXJkLCBhbmQgSQo+PiBkb24ndAo+PiB0aGluayB0aGUgaXNzdWVzIGFyZSBvciBuZWVkIHRvIGJl IGJsb2NrZXJzLCBzbyB0aGlzIGlzCj4+IAo+PiBSZXZpZXdlZC1ieTogSmFuaSBOaWt1bGEgPGph bmkubmlrdWxhQGludGVsLmNvbT4KPj4gCj4+IEkgdGhpbmsgd2UgKGFzIGluIGk5MTUgZm9sa3Mp IGNhbiBjbGVhbiB0aGUgcmVzdCBvZiB0aGUgYmlrZXNoZWRkaW5nIHVwLAo+PiBhbmQgSSBkb24n dCB0aGluayB3ZSBzaG91bGQgYmUgTkFLaW5nIHRoaXMgYWQgaW5maW5pdHVtIHRvIHRlYWNoIHlv dSB0bwo+PiBiZWNvbWUgYW4gaTkxNSBkZXZlbG9wZXIuLi4gdW5sZXNzIHlvdSB3YW50IHRvIGJl IG9uZS4gOykKCkxpYmluLCBJIHN1Z2dlc3QgdGFraW5nIHRoYXQgUi1iIG5vdyBpbnN0ZWFkIG9m IHdyaXRpbmcgYSBuZXcgdmVyc2lvbiBvZgp0aGlzIHBhdGNoIGlmIHlvdSB3YW50IHRvIGdldCB0 aGluZ3MgdXBzdHJlYW1lZCEKClBsZWFzZSBmb2N1cyBvbiBwYXRjaCA0LgoKQlIsCkphbmkuCgoK Pj4gCj4+ID4gLS0tCj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgICAgfCAg IDEgKwo+PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgIHwgICA1ICsrCj4+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgfCAxMzgKPj4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiA+ICAzIGZpbGVzIGNoYW5nZWQsIDE0NCBp bnNlcnRpb25zKCspCj4+ID4KPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kbWEuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPj4gPiBpbmRl eCAwOTdkNGJhLi44ZmZiNWRjIDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZG1hLmMKPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4+ ID4gQEAgLTg1OCw2ICs4NTgsNyBAQCBpbnQgaTkxNV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+PiB1bnNpZ25lZCBsb25nIGZsYWdzKQo+PiA+ICAJbXV0ZXhfaW5pdCgmZGV2 X3ByaXYtPnNiX2xvY2spOwo+PiA+ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPm1vZGVzZXRfcmVz dG9yZV9sb2NrKTsKPj4gPiAgCW11dGV4X2luaXQoJmRldl9wcml2LT5jc3JfbG9jayk7Cj4+ID4g KwltdXRleF9pbml0KCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+PiA+Cj4+ID4gIAlpbnRlbF9wbV9z ZXR1cChkZXYpOwo+PiA+Cj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+ID4gaW5kZXgg MDVmZmQ1YS4uMmM2Yjc2ZiAxMDA2NDQKPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiA+ IEBAIC0xODgyLDYgKzE4ODIsMTEgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+PiA+Cj4+ ID4gIAkvKiBoZGEvaTkxNSBhdWRpbyBjb21wb25lbnQgKi8KPj4gPiAgCWJvb2wgYXVkaW9fY29t cG9uZW50X3JlZ2lzdGVyZWQ7Cj4+ID4gKwkvKioKPj4gPiArCSAqIGF2X211dGV4IC0gbXV0ZXgg Zm9yIGF1ZGlvL3ZpZGVvIHN5bmMKPj4gPiArCSAqCj4+ID4gKwkgKi8KPj4gPiArCXN0cnVjdCBt dXRleCBhdl9tdXRleDsKPj4gPgo+PiA+ICAJdWludDMyX3QgaHdfY29udGV4dF9zaXplOwo+PiA+ ICAJc3RydWN0IGxpc3RfaGVhZCBjb250ZXh0X2xpc3Q7Cj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdWRpby5jCj4+ID4gaW5kZXggZGMzMmNmNC4uYTAyMTcyMCAxMDA2NDQKPj4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+PiA+IEBAIC02OCw2ICs2OCwzMSBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IHsKPj4gPiAgCXsgMTQ4NTAwLCBBVURfQ09ORklHX1BJWEVMX0NMT0NLX0hE TUlfMTQ4NTAwIH0sCj4+ID4gIH07Cj4+ID4KPj4gPiArLyogSERNSSBOL0NUUyB0YWJsZSAqLwo+ PiA+ICsjZGVmaW5lIFRNRFNfMjk3TSAyOTcwMDAKPj4gPiArI2RlZmluZSBUTURTXzI5Nk0gRElW X1JPVU5EX1VQKDI5NzAwMCAqIDEwMDAsIDEwMDEpCj4+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ewo+PiA+ICsJaW50IHNhbXBsZV9yYXRlOwo+PiA+ICsJaW50IGNsb2NrOwo+PiA+ICsJaW50IG47 Cj4+ID4gKwlpbnQgY3RzOwo+PiA+ICt9IGF1ZF9uY3RzW10gPSB7Cj4+ID4gKwl7IDQ0MTAwLCBU TURTXzI5Nk0sIDQ0NTksIDIzNDM3NSB9LAo+PiA+ICsJeyA0NDEwMCwgVE1EU18yOTdNLCA0NzA0 LCAyNDc1MDAgfSwKPj4gPiArCXsgNDgwMDAsIFRNRFNfMjk2TSwgNTgyNCwgMjgxMjUwIH0sCj4+ ID4gKwl7IDQ4MDAwLCBUTURTXzI5N00sIDUxMjAsIDI0NzUwMCB9LAo+PiA+ICsJeyAzMjAwMCwg VE1EU18yOTZNLCA1ODI0LCA0MjE4NzUgfSwKPj4gPiArCXsgMzIwMDAsIFRNRFNfMjk3TSwgMzA3 MiwgMjIyNzUwIH0sCj4+ID4gKwl7IDg4MjAwLCBUTURTXzI5Nk0sIDg5MTgsIDIzNDM3NSB9LAo+ PiA+ICsJeyA4ODIwMCwgVE1EU18yOTdNLCA5NDA4LCAyNDc1MDAgfSwKPj4gPiArCXsgOTYwMDAs IFRNRFNfMjk2TSwgMTE2NDgsIDI4MTI1MCB9LAo+PiA+ICsJeyA5NjAwMCwgVE1EU18yOTdNLCAx MDI0MCwgMjQ3NTAwIH0sCj4+ID4gKwl7IDE3NjQwMCwgVE1EU18yOTZNLCAxNzgzNiwgMjM0Mzc1 IH0sCj4+ID4gKwl7IDE3NjQwMCwgVE1EU18yOTdNLCAxODgxNiwgMjQ3NTAwIH0sCj4+ID4gKwl7 IDE5MjAwMCwgVE1EU18yOTZNLCAyMzI5NiwgMjgxMjUwIH0sCj4+ID4gKwl7IDE5MjAwMCwgVE1E U18yOTdNLCAyMDQ4MCwgMjQ3NTAwIH0sCj4+ID4gK307Cj4+IAo+PiBPa2F5LCBJIGFkbWl0LCBJ IGRpZCBub3QgbG9vayB0aGVzZSB1cCBpbiB0aGUgc3BlYy4gKmJsdXNoKi4gSSdtIHN1cmUKPj4g VmlsbGUgaGFzL3dpbGwuIDspCj4+IAo+PiA+ICsKPj4gPiAgLyogZ2V0IEFVRF9DT05GSUdfUElY RUxfQ0xPQ0tfSERNSV8qIHZhbHVlIGZvciBtb2RlICovCj4+ID4gIHN0YXRpYyB1MzIgYXVkaW9f Y29uZmlnX2hkbWlfcGl4ZWxfY2xvY2soc3RydWN0IGRybV9kaXNwbGF5X21vZGUKPj4gKm1vZGUp Cj4+ID4gIHsKPj4gPiBAQCAtOTAsNiArMTE1LDMxIEBAIHN0YXRpYyB1MzIKPj4gYXVkaW9fY29u ZmlnX2hkbWlfcGl4ZWxfY2xvY2soc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4+ID4g IAlyZXR1cm4gaGRtaV9hdWRpb19jbG9ja1tpXS5jb25maWc7Cj4+ID4gIH0KPj4gPgo+PiA+ICtz dGF0aWMgaW50IGF1ZGlvX2NvbmZpZ19nZXRfbihjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZQo+PiAqbW9kZSwgaW50IHJhdGUpCj4+ID4gK3sKPj4gPiArCWludCBpOwo+PiA+ICsKPj4gPiAr CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF1ZF9uY3RzKTsgaSsrKSB7Cj4+ID4gKwkJaWYg KChyYXRlID09IGF1ZF9uY3RzW2ldLnNhbXBsZV9yYXRlKSAmJgo+PiA+ICsJCQkobW9kZS0+Y2xv Y2sgPT0gYXVkX25jdHNbaV0uY2xvY2spKSB7Cj4+ID4gKwkJCXJldHVybiBhdWRfbmN0c1tpXS5u Owo+PiA+ICsJCX0KPj4gPiArCX0KPj4gPiArCXJldHVybiAwOwo+PiA+ICt9Cj4+ID4gKwo+PiA+ ICsvKiBjaGVjayB3aGV0aGVyIE4vQ1RTL00gbmVlZCBiZSBzZXQgbWFudWFsbHkgKi8KPj4gPiAr c3RhdGljIGJvb2wgYXVkaW9fcmF0ZV9uZWVkX3Byb2coc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4+ID4gKwkJCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUKPj4gKm1vZGUpCj4+ID4gK3sKPj4g PiArCWlmICgoKG1vZGUtPmNsb2NrID09IFRNRFNfMjk3TSkgfHwKPj4gPiArCQkgKG1vZGUtPmNs b2NrID09IFRNRFNfMjk2TSkpICYmCj4+ID4gKwkJaW50ZWxfcGlwZV9oYXNfdHlwZShjcnRjLCBJ TlRFTF9PVVRQVVRfSERNSSkpCj4+ID4gKwkJcmV0dXJuIHRydWU7Cj4+ID4gKwllbHNlCj4+ID4g KwkJcmV0dXJuIGZhbHNlOwo+PiA+ICt9Cj4+ID4gKwo+PiA+ICBzdGF0aWMgYm9vbCBpbnRlbF9l bGRfdXB0b2RhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gPiAgCQkJICAg ICAgIGludCByZWdfZWxkdiwgdWludDMyX3QgYml0c19lbGR2LAo+PiA+ICAJCQkgICAgICAgaW50 IHJlZ19lbGRhLCB1aW50MzJfdCBiaXRzX2VsZGEsCj4+ID4gQEAgLTE4NCw2ICsyMzQsOCBAQCBz dGF0aWMgdm9pZCBoc3dfYXVkaW9fY29kZWNfZGlzYWJsZShzdHJ1Y3QKPj4gaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikKPj4gPgo+PiA+ICAJRFJNX0RFQlVHX0tNUygiRGlzYWJsZSBhdWRpbyBjb2Rl YyBvbiBwaXBlICVjXG4iLAo+PiBwaXBlX25hbWUocGlwZSkpOwo+PiA+Cj4+ID4gKwltdXRleF9s b2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+PiA+ICsKPj4gCj4+IEJpa2VzaGVkLiBXZSBzaG91 bGQgdGhpbmsgYWJvdXQgbW92aW5nIHRoZSBsb2NraW5nIHRvCj4+IGludGVsX2F1ZGlvX2NvZGVj X2VuYWJsZSBhbmQgaW50ZWxfYXVkaW9fY29kZWNfZGlzYWJsZSBmb3IKPj4gY29uc2lzdGVuY3ku IFdlJ2xsIGJlIGFkZGluZyBuZXcgcGxhdGZvcm0gaG9va3MgZXZlbnR1YWxseSBhbnl3YXksCj4+ IG5vCj4+IG5lZWQgdG8gZHVwbGljYXRlIHRoZSBsb2NraW5nIGV2ZXJ5d2hlcmUuCj4KPiBZZXMs IGF0IGZpcnN0LCBJIHdhbnQgdG8gYWRkIHRoZSBtdXRleCBpbiBpbnRlbF9hdWRpb19jb2RlY19l bmFibGUsCj4gYnV0IGFmdGVyIGEgc2Vjb25kIHRob3VnaHQsIHdlIGRvbid0IG5lZWQgaXQgZm9y IGlsa194eHggYW5kIGc0eF94eHgsCj4gc28gSSBtb3ZlZCB0aGUgbG9jayBpbiB0aGUgaHN3IHNw ZWNpZmljIGZ1bmN0aW9uIGZvciBlZmZpY2llbmN5LiAKPgo+IEkgd2lsbCBtb3ZlIGl0IHRvIGlu dGVsX2F1ZGlvX2NvZGVjX2VuYWJsZSBpbiBuZXh0IHZlcnNpb24uCj4KPj4gCj4+ID4gIAkvKiBE aXNhYmxlIHRpbWVzdGFtcHMgKi8KPj4gPiAgCXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX0NGRyhw aXBlKSk7Cj4+ID4gIAl0bXAgJj0gfkFVRF9DT05GSUdfTl9WQUxVRV9JTkRFWDsKPj4gPiBAQCAt MTk5LDYgKzI1MSw4IEBAIHN0YXRpYyB2b2lkIGhzd19hdWRpb19jb2RlY19kaXNhYmxlKHN0cnVj dAo+PiBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+PiA+ICAJdG1wICY9IH5BVURJT19FTERfVkFM SUQocGlwZSk7Cj4+ID4gIAl0bXAgJj0gfkFVRElPX09VVFBVVF9FTkFCTEUocGlwZSk7Cj4+ID4g IAlJOTE1X1dSSVRFKEhTV19BVURfUElOX0VMRF9DUF9WTEQsIHRtcCk7Cj4+ID4gKwo+PiA+ICsJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+PiA+ICB9Cj4+ID4KPj4gPiAgc3Rh dGljIHZvaWQgaHN3X2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcgo+PiAq Y29ubmVjdG9yLAo+PiA+IEBAIC0yMTUsNiArMjY5LDggQEAgc3RhdGljIHZvaWQgaHN3X2F1ZGlv X2NvZGVjX2VuYWJsZShzdHJ1Y3QKPj4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiA+ICAJ RFJNX0RFQlVHX0tNUygiRW5hYmxlIGF1ZGlvIGNvZGVjIG9uIHBpcGUgJWMsICV1IGJ5dGVzCj4+ IEVMRFxuIiwKPj4gPiAgCQkgICAgICBwaXBlX25hbWUocGlwZSksIGRybV9lbGRfc2l6ZShlbGQp KTsKPj4gPgo+PiA+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsKPj4gPiArCj4+ ID4gIAkvKiBFbmFibGUgYXVkaW8gcHJlc2VuY2UgZGV0ZWN0LCBpbnZhbGlkYXRlIEVMRCAqLwo+ PiA+ICAJdG1wID0gSTkxNV9SRUFEKEhTV19BVURfUElOX0VMRF9DUF9WTEQpOwo+PiA+ICAJdG1w IHw9IEFVRElPX09VVFBVVF9FTkFCTEUocGlwZSk7Cj4+ID4gQEAgLTI1Myw2ICszMDksOCBAQCBz dGF0aWMgdm9pZCBoc3dfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdAo+PiBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCj4+ID4gIAllbHNlCj4+ID4gIAkJdG1wIHw9IGF1ZGlvX2NvbmZpZ19oZG1p X3BpeGVsX2Nsb2NrKG1vZGUpOwo+PiA+ICAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwg dG1wKTsKPj4gPiArCj4+ID4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7Cj4+ ID4gIH0KPj4gPgo+PiA+ICBzdGF0aWMgdm9pZCBpbGtfYXVkaW9fY29kZWNfZGlzYWJsZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPj4gPiBAQCAtNTE0LDEyICs1NzIsOTIgQEAgc3Rh dGljIGludAo+PiBpOTE1X2F1ZGlvX2NvbXBvbmVudF9nZXRfY2RjbGtfZnJlcShzdHJ1Y3QgZGV2 aWNlICpkZXYpCj4+ID4gIAlyZXR1cm4gcmV0Owo+PiA+ICB9Cj4+ID4KPj4gPiArc3RhdGljIGlu dCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZQo+PiAq ZGV2LAo+PiA+ICsJCQkJCQlpbnQgcG9ydCwgaW50IHJhdGUpCj4+ID4gK3sKPj4gPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldl90b19pOTE1KGRldik7Cj4+ID4gKwlz dHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRldl9wcml2LT5kZXY7Cj4+ID4gKwlzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcjsKPj4gPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0Owo+PiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4+ ID4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPj4gPiArCWVudW0gcGlwZSBwaXBl ID0gLTE7Cj4+IAo+PiBOaXRwaWNrLiBJbml0aWFsaXplIHRvIElOVkFMSURfUElQRS4KPgo+IE9o LCB5ZXMsIEkgd2lsbCBjaGFuZ2UgaXQuCj4KPj4gCj4+ID4gKwl1MzIgdG1wOwo+PiA+ICsJaW50 IG5fbG93LCBuX3VwLCBuOwo+PiA+ICsKPj4gPiArCS8qIEhTVywgQkRXIFNLTCBuZWVkIHRoaXMg Zml4ICovCj4+ID4gKwlpZiAoIUlTX1NLWUxBS0UoZGV2X3ByaXYpICYmCj4+ID4gKwkJIUlTX0JS T0FEV0VMTChkZXZfcHJpdikgJiYKPj4gPiArCQkhSVNfSEFTV0VMTChkZXZfcHJpdikpCj4+ID4g KwkJcmV0dXJuIDA7Cj4+IAo+PiBOaXRwaWNrLiBXZSBzaG91bGQgZWxhYm9yYXRlIHRoYXQgYSBi aXQgbW9yZS4gSXMgaXQgYmFzaWNhbGx5IHRoYXQgb25seQo+PiB0aGUgYWJvdmUgcGxhdGZvcm1z IHN1cHBvcnQgSERNSSBtb2RlIGFuZCBhdWRpbyBzYW1wbGUgcmF0ZQo+PiBjb21iaW5hdGlvbnMK Pj4gdGhhdCB0aGUgYXV0b21hdGljIG1vZGUgaW4gaGFyZHdhcmUgY2FuJ3Qgc3VwcG9ydD8gSW4g b3RoZXIgd29yZHMsCj4+IHdvdWxkCj4+IGF1ZGlvX3JhdGVfbmVlZF9wcm9nKCkgYWx3YXlzIHJl dHVybiBmYWxzZSBvbiBvdGhlciBwbGF0Zm9ybXMgdGhhbgo+PiBoc3cvYmR3L3NrbD8gQW5kIGlm IHNvLCB3aHkgZG8gd2UgaGF2ZSB0aGlzIGNoZWNrPyBQZXJoYXBzIHdlCj4+IHNob3VsZAo+PiB0 YWtlIGNhcmUgdG8gbWFrZSBhdWRpb19yYXRlX25lZWRfcHJvZygpIGRvIHRoZSByaWdodCB0aGlu ZywgYW5kIGRvCj4+IHRoYXQKPj4gYXMgdGhlIGZpcnN0IHRoaW5nIGhlcmUuCj4KPiBJIGFkZCB0 aGlzIGp1ZGdlbWVudCBiZWNhdXNlIHRoZSBwbGF0Zm9ybXMgYXJlIGZpbGVkIGluIG91cgo+IGlu dGVybmFsIGRvY3VtZW50LiBCZXNpZGVzLCB0aGUgbmV4dCBnZW4gbWF5IGhhdmUgc3VjaAo+IGlz c3VlIGFuZCBtYXkgbm90ICh0aGUgZG9jIHNhaWQgTUFZIGhhdmUgc3VjaCBpc3N1ZSkuCj4gRm9y IGVhc2lseSBleHRlbnNpb24sIEkgYWRkIHN1Y2gganVkZ2VtZW50Lgo+Cj4gYXVkaW9fcmF0ZV9u ZWVkX3Byb2coKSBtZWFucyB0aGUgc3BlY2lmaWVkIGNsb2NrIG5lZWQKPiBzdWNoIHNldHRpbmcu IEJ1dCBJJ20gbm90IHN1cmUgd2hldGhlciBvdGhlciBvbGQgcGxhdGZvcm1zCj4gc3VwcG9ydCBz dWNoIGNsb2NrLiBJZiB5ZXMsIHRoZSBhdWRpb19yYXRlX25lZWRfcHJvZygpCj4gbWF5IGJlIG5v dCBlbm91Z2guIEFsdGhvdWdoIEkgdGhpbmsgZG9pbmcgdGhlIHNldHRpbmcKPiBzaG91bGQgYmUg T0sgZXZlbiBvbiB0aGUgcGxhdGZvcm1zIG5vdCBsaXN0ZWQgaW4gdGhlIGRvYy4KPiBCdXQgSSBo YXZlIG5vIHBsYXRmb3JtIHRvIGRvIHRoZSB0ZXN0LCBzbyBJIGRpZG4ndCBpbmNsdWRlCj4gb3Ro ZXIgcGxhdGZvcm0gdGhpcyB0aW1lLgo+Cj4+IAo+PiA+ICsKPj4gPiArCW11dGV4X2xvY2soJmRl dl9wcml2LT5hdl9tdXRleCk7Cj4+ID4gKwkvKiAxLiBnZXQgdGhlIHBpcGUgKi8KPj4gPiArCWZv cl9lYWNoX2ludGVsX2VuY29kZXIoZHJtX2RldiwgaW50ZWxfZW5jb2Rlcikgewo+PiA+ICsJCWlm IChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JKQo+PiA+ICsJCQljb250 aW51ZTsKPj4gPiArCQlpbnRlbF9kaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydCgmaW50ZWxfZW5j b2Rlci0KPj4gPmJhc2UpOwo+PiA+ICsJCWlmIChwb3J0ID09IGludGVsX2RpZ19wb3J0LT5wb3J0 KSB7Cj4+ID4gKwkJCWNydGMgPSB0b19pbnRlbF9jcnRjKGludGVsX2VuY29kZXItPmJhc2UuY3J0 Yyk7Cj4+ID4gKwkJCWlmICghY3J0Yykgewo+PiA+ICsJCQkJRFJNX0RFQlVHX0tNUygiJXM6IGNy dGMgaXMKPj4gTlVMTFxuIiwgX19mdW5jX18pOwo+PiAKPj4gRFJNX0RFQlVHX0tNUyBpbmNsdWRl cyBfX2Z1bmNfXyBhbHJlYWR5Lgo+Cj4gSSB3aWxsIGNoYW5nZSBpdCBpbiBuZXh0IHZlcnNpb24u IFRoYW5rcy4gCj4+IAo+PiA+ICsJCQkJY29udGludWU7Cj4+ID4gKwkJCX0KPj4gPiArCQkJcGlw ZSA9IGNydGMtPnBpcGU7Cj4+ID4gKwkJCWJyZWFrOwo+PiA+ICsJCX0KPj4gPiArCX0KPj4gPiAr Cj4+ID4gKwlpZiAocGlwZSA9PSBJTlZBTElEX1BJUEUpIHsKPj4gPiArCQlEUk1fREVCVUdfS01T KCJubyBwaXBlIGZvciB0aGUgcG9ydCAlY1xuIiwKPj4gcG9ydF9uYW1lKHBvcnQpKTsKPj4gPiAr CQltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7Cj4+ID4gKwkJcmV0dXJuIC1FTk9E RVY7Cj4+IAo+PiBOaXRwaWNrLiBJIGFtIG5vdCBmb25kIG9mIGVhcmx5IHJldHVybnMgd2hlbiBj bGVhbnVwIGxpa2UgbXV0ZXggdW5sb2NrCj4+IGlzIHJlcXVpcmVkLiBUaGUgZnVuY3Rpb24gc2hv dWxkIGhhdmUgZ290byBsYWJlbHMgYXQgdGhlIGVuZCB3aXRoCj4+IGNsZWFudXAuIChPVE9IIGlm IHdlIG1vdmUgbG9ja2luZyB0byBoaWdoZXIgbGV2ZWwgdGhpcyBwcm9ibGVtIGdvZXMKPj4gYXdh eS4pCj4KPiBPSywgc28gaXQgc2VlbXMgdG8gbW92ZSB0aGUgbG9jayBpbiB1cHBlciBmdW5jdGlv biBpcyBhbiBlYXN5Cj4gd2F5LiBJIHdpbGwgbW92ZSB0aGUgbG9jayBpbiB0aGUgdXBwZXIgZnVu Y3Rpb24uCj4KPj4gCj4+ID4gKwl9Cj4+ID4gKwlEUk1fREVCVUdfS01TKCJwaXBlICVjIGNvbm5l Y3RzIHBvcnQgJWNcbiIsCj4+ID4gKwkJCQkgIHBpcGVfbmFtZShwaXBlKSwgcG9ydF9uYW1lKHBv cnQpKTsKPj4gPiArCW1vZGUgPSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4+ ID4gKwo+PiA+ICsJLyogMi4gY2hlY2sgd2hldGhlciB0byBzZXQgdGhlIE4vQ1RTL00gbWFudWFs bHkgb3Igbm90ICovCj4+ID4gKwlpZiAoIWF1ZGlvX3JhdGVfbmVlZF9wcm9nKGNydGMsIG1vZGUp KSB7Cj4+ID4gKwkJdG1wID0gSTkxNV9SRUFEKEhTV19BVURfQ0ZHKHBpcGUpKTsKPj4gPiArCQl0 bXAgJj0gfkFVRF9DT05GSUdfTl9QUk9HX0VOQUJMRTsKPj4gPiArCQlJOTE1X1dSSVRFKEhTV19B VURfQ0ZHKHBpcGUpLCB0bXApOwo+PiA+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2X211 dGV4KTsKPj4gPiArCQlyZXR1cm4gMDsKPj4gCj4+IE5pdHBpY2suIFNhbWUgaGVyZSwgeW91IGNv dWxkIGhhdmUgYW4gYXV0bzogbGFiZWwgYXQgdGhlIGVuZCB3aXRoIHRoZQo+PiBhdXRvIHByb2dy YW1taW5nLi4uCj4+IAo+PiA+ICsJfQo+PiA+ICsKPj4gPiArCW4gPSBhdWRpb19jb25maWdfZ2V0 X24obW9kZSwgcmF0ZSk7Cj4+ID4gKwlpZiAobiA9PSAwKSB7Cj4+ID4gKwkJRFJNX0RFQlVHX0tN UygiVXNpbmcgYXV0b21hdGljIG1vZGUgZm9yIE4gdmFsdWUKPj4gb24gcG9ydCAlY1xuIiwKPj4g PiArCQkJCQkgIHBvcnRfbmFtZShwb3J0KSk7Cj4+ID4gKwkJdG1wID0gSTkxNV9SRUFEKEhTV19B VURfQ0ZHKHBpcGUpKTsKPj4gPiArCQl0bXAgJj0gfkFVRF9DT05GSUdfTl9QUk9HX0VOQUJMRTsK Pj4gPiArCQlJOTE1X1dSSVRFKEhTV19BVURfQ0ZHKHBpcGUpLCB0bXApOwo+PiA+ICsJCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsKPj4gPiArCQlyZXR1cm4gMDsKPj4gCj4+IC4u LmVzcGVjaWFsbHkgYmVjYXVzZSB0aGlzIGJpdCBpcyBkdXBsaWNhdGVkIGZvciBubyBnb29kIHJl YXNvbi4KPj4gCj4+IEZhbGxiYWNrIHRvIGF1dG8gbW9kZSBpZiB0aGUgbW9kZSBpc24ndCBpbiB0 aGUgbGlzdCBpcywgSSB0aGluaywgYSBnb29kCj4+IHRoaW5nLiBNYXliZSBpdCB3b3VsZCBkZXNl cnZlIGEgRFJNX0VSUk9SLCBiZWNhdXNlIGNsZWFybHkgdGhhdAo+PiBzaG91bGRuJ3QgaGFwcGVu Lgo+Cj4gT0ssIEkgd2lsbCBhZGQgYXV0byBsYWJlbCBmb3IgaXQuIEFuZCBJIHdpbGwgdXNlIERS TV9FUlJPUiBpbiBuZXh0Cj4gdmVyc2lvbi4KPgo+PiAKPj4gQnV0IGl0J3MgYWN0dWFsbHkgdGhl ICFhdWRpb19yYXRlX25lZWRfcHJvZyBjYXNlIHRoYXQgbWFrZXMgbWUKPj4gd29uZGVyLiBJCj4+ IHRoaW5rIHdlJ3ZlIGNvbmZpcm1lZCB3aXRoIHRoZSBzaWxpY29uIGZvbGtzIHRoYXQgd2UgY2Fu IGNoYW5nZSBOIG9uCj4+IHRoZQo+PiBmbHkuLi4gYnV0IEknbSBhY3R1YWxseSBub3Qgc3VyZSBp ZiB3ZSd2ZSBjb25maXJtZWQgdGhhdCB3ZSBjYW4gc3dpdGNoCj4+IGJldHdlZW4gYXV0b21hdGlj IGFuZCBtYW51YWwgbW9kZXMgb24gdGhlIGZseS4gSSB0aGluayBJJ3ZlIHNhaWQgaXQKPj4gYmVm b3JlLCBidXQgSSB0aGluayBJJ2QgcHJlZmVyIGl0IGlmIHdlIGFsd2F5cyB1c2VkIHRoZSBtYW51 YWwgbW9kZQo+PiBhbnl3YXkgdG8gcmVkdWNlIHRoZSBjb21wbGV4aXR5IGFuZCBoYXZlIG9ubHkg b25lIGNvZGUgcGF0aCB0bwo+PiBkZWJ1ZywKPj4gYW5kIHRoYXQgd291bGQgYWxzbyBjb3ZlciB0 aGUgc29tZXdoYXQgb2YgYSBjb3JuZXIgY2FzZSAoYnV0IHN0aWxsIHJlYWwKPj4gY2FzZSkgb2Yg c3dpdGNoaW5nIGJldHdlZW4gYXV0b21hdGljL21hbnVhbCBtb2RlcyBvbiB0aGUgZmx5LiBBbmQK Pj4gb2YKPj4gY291cnNlLCB0aGlzIGNvbmZsaWN0cyB3aXRoIHdoYXQgSSBzYWlkIGFib3V0IHRo ZSBwbGF0Zm9ybSBzdXBwb3J0IGNoZWNrCj4+IGFib3ZlLCBzbyBuZWVkcyB0aG91Z2h0Lgo+Cj4g SSB3aWxsIGNoZWNrIHdpdGggc2lsaWNvbiB0ZWFtLiBCYXNlZCBvbiBvdXIgc3RyZXNzIHRlc3Qs IGl0IHNlZW1zCj4gdG8gYmUgT0sgY2hhbmdlIG1vZGUgb24gdGhlIGZseS4KPgo+IFdlIGRvbid0 IHNldCBmb3IgYWxsIHRoZSBmcmVxdWVuY2llcyBiZWNhdXNlIHRoZXJlIGFyZSBzbyBtYW55Cj4g ZnJlcXVlbmNpZXMgYW5kIHBsYXRmb3JtcyB0byBkbyB0aGUgc3RyZXNzIHRlc3QuIFdlIG1heSBu ZWVkCj4gYSBsb3QgdGltZSB0byBkbyB0aGUgdGVzdC4gSWYgdGhlIHNpbGljb24gdGVhbSBzYXlz IHdlIGNhbid0Cj4gY2hhbmdlIG1vZGUgb24gdGhlIGZseSwgSSB3aWxsIGNoYW5nZSBpdCBpbiBu ZXh0IHZlcnNpb24uIElmIHNpbGljb24KPiB0ZWFtIHNheXMgd2UgY2FuIGRvIGl0LCBJIHdpbGwg dXNlIHRoZSBIVyBhdXRvIG1vZGUgZm9yIG90aGVyIAo+IGZyZXF1ZW5jaWVzLiBXaGF0IGRvIHlv dSB0aGluaz8KPgo+IFJlZ2FyZHMsCj4gTGliaW4KPgo+PiAKPj4gPiArCX0KPj4gPiArCW5fbG93 ID0gbiAmIDB4ZmZmOwo+PiA+ICsJbl91cCA9IChuID4+IDEyKSAmIDB4ZmY7Cj4+ID4gKwo+PiA+ ICsJLyogNC4gc2V0IHRoZSBOL0NUUy9NICovCj4+ID4gKwl0bXAgPSBJOTE1X1JFQUQoSFNXX0FV RF9DRkcocGlwZSkpOwo+PiA+ICsJdG1wICY9IH4oQVVEX0NPTkZJR19VUFBFUl9OX01BU0sgfAo+ PiBBVURfQ09ORklHX0xPV0VSX05fTUFTSyk7Cj4+ID4gKwl0bXAgfD0gKChuX3VwIDw8IEFVRF9D T05GSUdfVVBQRVJfTl9TSElGVCkgfAo+PiA+ICsJCQkobl9sb3cgPDwgQVVEX0NPTkZJR19MT1dF Ul9OX1NISUZUKSB8Cj4+ID4gKwkJCUFVRF9DT05GSUdfTl9QUk9HX0VOQUJMRSk7Cj4+ID4gKwlJ OTE1X1dSSVRFKEhTV19BVURfQ0ZHKHBpcGUpLCB0bXApOwo+PiA+ICsKPj4gPiArCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsKPj4gPiArCXJldHVybiAwOwo+PiA+ICt9Cj4+ID4g Kwo+PiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50X29wcwo+PiBp OTE1X2F1ZGlvX2NvbXBvbmVudF9vcHMgPSB7Cj4+ID4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUs Cj4+ID4gIAkuZ2V0X3Bvd2VyCT0gaTkxNV9hdWRpb19jb21wb25lbnRfZ2V0X3Bvd2VyLAo+PiA+ ICAJLnB1dF9wb3dlcgk9IGk5MTVfYXVkaW9fY29tcG9uZW50X3B1dF9wb3dlciwKPj4gPiAgCS5j b2RlY193YWtlX292ZXJyaWRlID0KPj4gaTkxNV9hdWRpb19jb21wb25lbnRfY29kZWNfd2FrZV9v dmVycmlkZSwKPj4gPiAgCS5nZXRfY2RjbGtfZnJlcQk9IGk5MTVfYXVkaW9fY29tcG9uZW50X2dl dF9jZGNsa19mcmVxLAo+PiA+ICsJLnN5bmNfYXVkaW9fcmF0ZSA9IGk5MTVfYXVkaW9fY29tcG9u ZW50X3N5bmNfYXVkaW9fcmF0ZSwKPj4gPiAgfTsKPj4gPgo+PiA+ICBzdGF0aWMgaW50IGk5MTVf YXVkaW9fY29tcG9uZW50X2JpbmQoc3RydWN0IGRldmljZSAqaTkxNV9kZXYsCj4+ID4gLS0KPj4g PiAxLjkuMQo+PiA+Cj4+IAo+PiAtLQo+PiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2Ug VGVjaG5vbG9neSBDZW50ZXIKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVj aG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK