From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH v4 5/5] drm/dp-mst: Add helpers for querying and enabling MST DSC Date: Thu, 22 Aug 2019 19:49:59 -0400 Message-ID: <132036592d4e858b539fdd7e50bc134aa7150aec.camel@redhat.com> References: <20190822135741.12923-1-David.Francis@amd.com> <20190822135741.12923-6-David.Francis@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 D00DC6EB8A for ; Thu, 22 Aug 2019 23:50:02 +0000 (UTC) Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 12D473C93 for ; Thu, 22 Aug 2019 23:50:02 +0000 (UTC) Received: by mail-qk1-f200.google.com with SMTP id r200so7512921qke.19 for ; Thu, 22 Aug 2019 16:50:02 -0700 (PDT) In-Reply-To: <20190822135741.12923-6-David.Francis@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: David Francis , dri-devel@lists.freedesktop.org Cc: Wenjing Liu , Nikola Cornij List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCAyMDE5LTA4LTIyIGF0IDA5OjU3IC0wNDAwLCBEYXZpZCBGcmFuY2lzIHdyb3RlOgo+ IEFkZCBkcm1fZHBfbXN0X2RzY19jYXBzX2Zvcl9wb3J0IGFuZCBkcm1fZHBfbXN0X2RzY19lbmFi bGUsCj4gdHdvIGhlbHBlciBmdW5jdGlvbnMgZm9yIE1TVCBEU0MKPiAKPiBUaGUgZm9ybWVyLCBn aXZlbiBhIHBvcnQsIHJldHVybnMgdGhlIHJhdyBEUENEIERTQyBjYXBzIG9mZgo+IHRoYXQgcG9y dC4KPiAKPiBUaGUgbGF0dGVyLCBnaXZlbiBhIHBvcnQsIGVuYWJsZXMgb3IgZGlzYWJsZXMgRFND IG9uIHRoYXQgcG9ydC4KPiAKPiBJbiBib3RoIGNhc2VzLCB0aGUgcG9ydCBnaXZlbiBhcyBpbnB1 dCBzaG91bGQgYmUgYSBsZWFmIG9mCj4gdGhlIE1TVCB0cmVlIHdpdGggYW4gYXR0YWNoZWQgZGlz cGxheS4KPiAKPiBUaGUgbG9naWMgZm9yIHRoaXMgaXMgc29tZXdoYXQgY29tcGxpY2F0ZWQsIGFz IERTQyBjYW4gYmUKPiBlbmFibGVkIGluIDQgZGlmZmVyZW50IHdheXMuCj4gCj4gQ2FzZSAxOiBE UC10by1EUCBwZWVyIGRldmljZQo+IGlmIHRoZSBicmFuY2ggaW1tZWRpYXRlbHkgdXBzdHJlYW0g aGFzCj4gIC0gUERUID0gRFBfUEVFUl9ERVZJQ0VfRFBfTVNUX0JSQU5DSElORyAoMikKPiAgLSBE UENEIHJldi4gPj0gRFAgMS40Cj4gIC0gRXhhY3RseSBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQK PiAgLSBUaGUgb3V0cHV0IGhhcyBQRFQgPSBEUF9QRUVSX0RFVklDRV9TU1RfU0lOSyAoMykKPiAK PiBJbiB0aGlzIGNhc2UsIERTQyBjb3VsZCBiZSBwb3NzaWJsZSBlaXRoZXIgb24gdGhlIGVuZHBv aW50Cj4gb3IgdGhlIHBlZXIgZGV2aWNlLiBQcmVmZXIgdGhlIGVuZHBvaW50LCB3aGljaCBpcyBw b3NzaWJsZSBpZgo+ICAtIFRoZSBlbmRwb2ludCBoYXMgRFBfRFNDX0RFQ09NUFJFU1NJT05fSVNf U1VQUE9SVEVEIGJpdCBzZXQKPiAgLSBUaGUgZW5kcG9pbnQgaGFzIERQX0ZFQ19DQVBBQkxFIGJp dCBzZXQKPiAgLSBUaGUgcGVlciBkZXZpY2UgaGFzIERTQ19QQVNTVEhST1VHSF9DQVBBQklMSVRZ IGJpdCBzZXQgKGZyb20gRFAgdjIuMCkKPiAKPiBPdGhlcndpc2UsIHVzZSB0aGUgcGVlciBkZXZp Y2UKPiAKPiBDYXNlIDI6IERQLXRvLUhETUkgcGVlciBkZXZpY2UKPiBJZiB0aGUgb3V0cHV0IHBv cnQgaGFzCj4gIC0gUERUID0gRFBfUEVFUl9ERVZJQ0VfRFBfTEVHQUNZX0NPTlYgKDQpCj4gIC0g RFBDRCByZXYuID49IERQIDEuNAo+ICAtIExEUFMgPSB0cnVlCj4gIC0gTUNTID0gZmFsc2UKPiAK PiBJbiB0aGlzIGNhc2UsIERTQyBjYW4gb25seSBiZSBhdHRlbXB0ZWQgb24gdGhlIHBlZXIgZGV2 aWNlCj4gKHRoZSBvdXRwdXQgcG9ydCkKPiAKPiBDYXNlIDM6IFZpcnR1YWwgRFAgU2luayAoSW50 ZXJuYWwgRGlzcGxheSBQYW5lbCkKPiBJZiB0aGUgb3V0cHV0IHBvcnQgaGFzCj4gIC0gRFBDRCBy ZXYuID49IERQIDEuNAo+ICAtIHBvcnRfbnVtID49IDgKPiAKPiBJbiB0aGlzIGNhc2UsIERTQyBj YW4gb25seSBiZSBhdHRlbXB0ZWQgb24gdGhlIHBlZXIgZGV2aWNlCj4gKHRoZSBvdXRwdXQgcG9y dCkKPiAKPiBDYXNlIDQ6IFN5bmFwdGl4IFdvcmthcm91bmQKPiBJZiB0aGUgb3V0cHV0IGhhcwo+ ICAtIGxpbmsgRFBDRCByZXYuID49IERQIDEuNAo+ICAtIGxpbmsgYnJhbmNoX2Rldl9pZCA9IDB4 OTBDQzI0IChTeW5hcHRpeCkKPiAgLSBUaGVyZSBpcyBleGFjdGx5IG9uZSBicmFuY2ggZGV2aWNl IGJldHdlZW4gdGhlIGxpbmsgYW5kIG91dHB1dAo+IAo+IEluIHRoaXMgY2FzZSwgRFNDIGNhbiBi ZSBhdHRlbXB0ZWQsIGJ1dCBvbmx5IHVzaW5nIHRoZSAqbGluayoKPiBhdXggZGV2aWNlJ3MgY2Fw cy4gVGhpcyBpcyBhIHF1aXJrLgo+IAo+IENjOiBMeXVkZSBQYXVsIDxseXVkZUByZWRoYXQuY29t Pgo+IENjOiBXZW5qaW5nIExpdSA8V2VuamluZy5MaXVAYW1kLmNvbT4KPiBDYzogTmlrb2xhIENv cm5paiA8Tmlrb2xhLkNvcm5pakBhbWQuY29tPgo+IFNpZ25lZC1vZmYtYnk6IERhdmlkIEZyYW5j aXMgPERhdmlkLkZyYW5jaXNAYW1kLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9k cF9tc3RfdG9wb2xvZ3kuYyB8IDE5NSArKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNs dWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oICAgICAgIHwgICAzICsKPiAgMiBmaWxlcyBjaGFu Z2VkLCAxOTggaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2RwX21zdF90b3BvbG9neS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3Bv bG9neS5jCj4gaW5kZXggYWY0YjVjZWM3Yzg0Li4wMGRkYzU0YWY2NWIgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKPiBAQCAtNDE4NiwzICs0MTg2LDE5OCBAQCBzdGF0 aWMgdm9pZCBkcm1fZHBfbXN0X3VucmVnaXN0ZXJfaTJjX2J1cyhzdHJ1Y3QKPiBkcm1fZHBfYXV4 ICphdXgpCj4gIHsKPiAgCWkyY19kZWxfYWRhcHRlcigmYXV4LT5kZGMpOwo+ICB9Cj4gKwo+ICsv KioKPiArICogZHJtX2RwX21zdF9pc192aXJ0dWFsX2RwY2QoKSAtIElzIHRoZSBnaXZlbiBwb3J0 IGEgdmlydHVhbCBEUENEIGRldmljZT8KPiArICogQHBvcnQ6IFRoZSBwb3J0IHRvIGNoZWNrCj4g KyAqCgpNaW5kIGVsYWJvcmF0aW5nIGEgYml0IGhlcmUgaW4gdGhlIGtlcm5lbCBkb2N1bWVudGF0 aW9uIG9uIHdoYXQgYSB2aXJ0dWFsIERQQ0QKZGV2aWNlIGlzPwoKPiArICogUmV0dXJuczoKPiAr ICogdHJ1ZSBpZiB0aGUgcG9ydCBpcyBhIHZpcnR1YWwgRFBDRCBwZWVyIGRldmljZSwgZmFsc2Ug b3RoZXJ3aXNlCj4gKyAqLwo+ICtzdGF0aWMgYm9vbCBkcm1fZHBfbXN0X2lzX3ZpcnR1YWxfZHBj ZChzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RwX21z dF9wb3J0ICpkb3duc3RyZWFtX3BvcnQ7Cj4gKwo+ICsJaWYgKCFwb3J0KQo+ICsJCXJldHVybiBm YWxzZTsKCkknZCBkcm9wIHRoaXMsIGFuZCBqdXN0IG1vdmUgdGhlIGlmICghcG9ydCkgY2hlY2sg aW50bwpkcm1fZHBfbXN0X2RzY19hdXhfZm9yX3BvcnQoKS4gTWFrZXMgdGhpbmdzIGEgbGl0dGxl IG1vcmUgZXhwbGljaXQuCgo+ICsKPiArCS8qIFZpcnR1YWwgRFAgU2luayAoSW50ZXJuYWwgRGlz cGxheSBQYW5lbCkgKi8KPiArCWlmIChwb3J0LT5wb3J0X251bSA+PSA4ICYmIHBvcnQtPmRwY2Rf cmV2ID49IERQX0RQQ0RfUkVWXzE0KQo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCS8qIERQLXRv LUhETUkgUHJvdG9jb2wgQ29udmVydGVyICovCj4gKwlpZiAocG9ydC0+cGR0ID09IERQX1BFRVJf REVWSUNFX0RQX0xFR0FDWV9DT05WICYmCj4gKwkJCSFwb3J0LT5tY3MgJiYKPiArCQkJcG9ydC0+ bGRwcyAmJgo+ICsJCQlwb3J0LT5kcGNkX3JldiA+PSBEUF9EUENEX1JFVl8xNCkKPiArCQlyZXR1 cm4gdHJ1ZTsKClBsZWFzZSBmaXggdGhlIGluZGVudGluZyBoZXJlLCBtb3N0IERSTSBjb2RlIChJ IG1heSBoYXZlIG1pc3Rha2VubHkgcG9pbnRlZAp5b3UgYXQgdGhlIGtlcm5lbCBzdHlsZSBndWlk ZWxpbmVzLCBidXQgSSByZWFsaXplZCB0aGV5IGRvbid0IGV4cGxpY2l0bHkKbWVudGlvbiB0aGlz IG90aGVyIHRoZW4gdGhlIHJ1bGUgb2YgInlvdXIgY29kZSBzaG91bGQgbG9vayBsaWtlIHRoZSBj b2RlCmFyb3VuZCBpdCIpIHdyaXR0ZW4gd2l0aCBsaW5lIGNvbnRpbnVhdGlvbnMgc3RhcnRpbmcg b24gdGhlIHNhbWUgY29sdW1uIGFzIHRoZQpiZWdpbm5pbmcgcGFyYW50aGVzaXMKCmlmIChzb21l X3ZlcnlfbG9uZ192YXJpYWJsZSA9PSBhbm90aGVyX3ZlcnlfbG9uZ192YXJpYWJsZV93b3cgfHwK ICAgIGV2ZXJ5X2lkZW50aWZpZXJfaGVyZV9pc19sb25nID4gYnV0X3doYXRfaWZfd2VfaGF2ZV9h X3N1Yl9jb25kaXRpb25hbCB8fAogICAgKHRoZW5fd2VfZW5kX3VwX2Zvcm1hdHRpbmdfaXRfbGlr ZV90aGlzICYmCiAgICAgc3RhcnRpbmdfYXRfdGhlX2JlZ2lubmluZ19wYXJhbnRoZXNpcykpIHsK CXNhbWVfZm9yX2Z1bmN0aW9uX2NhbGxzKCJXaGljaCBhbHNvIHJlcXVpcmUgdmVyeSBsb25nIGxp bmVzXG4iLAoJICAgICAgICAgICAgICAgICAgICAgICAgZm9vLCBiYXIsIGJheik7Cn0KCj4gKwo+ ICsJLyogRFAtdG8tRFAgKi8KPiArCWlmIChwb3J0LT5wZHQgPT0gRFBfUEVFUl9ERVZJQ0VfTVNU X0JSQU5DSElORyAmJgo+ICsJCQlwb3J0LT5tc3RiICYmCj4gKwkJCXBvcnQtPmRwY2RfcmV2ID49 IERQX0RQQ0RfUkVWXzE0ICYmCj4gKwkJCXBvcnQtPm1zdGItPm51bV9wb3J0cyA9PSAyKSB7Cj4g KwkJbGlzdF9mb3JfZWFjaF9lbnRyeShkb3duc3RyZWFtX3BvcnQsICZwb3J0LT5tc3RiLT5wb3J0 cywgbmV4dCkKPiB7Cj4gKwkJCWlmICghZG93bnN0cmVhbV9wb3J0LT5pbnB1dCAmJgo+ICsJCQkJ ZG93bnN0cmVhbV9wb3J0LT5wZHQgPT0KPiBEUF9QRUVSX0RFVklDRV9TU1RfU0lOSykKPiArCQkJ CXJldHVybiB0cnVlOwo+ICsJCX0KVGhpcyBpc24ndCBzYWZlLCBhbnl0aGluZyB0aGF0IGl0ZXJh dGVzIGRvd253YXJkcyAoc28gZWl0aGVyIG1zdGItPnBvcnRzLCBvcgpwb3J0LT5tc3RiKSBpbiB0 aGUgTVNUIHRvcG9sb2d5IG5lZWRzIHRvIGhhcHBlbiB1bmRlciAmbWdyLT5sb2NrLCBzaW5jZQpv dGhlcndpc2UgdGhlIHBvcnQgbGlzdCBjYW4gY2hhbmdlIHVuZGVyIHVzLiBOb3RlIHRoZXJlJ3Mg cHJvYmFibHkgc29tZSBwbGFjZXMKdGhpcyBpc24ndCBmb2xsb3dlZCwgYnV0IEknbSBpbiB0aGUg cHJvY2VzcyBvZiBmaXhpbmcgdGhhdDoKCmh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9y Zy9wYXRjaC8zMTg2ODMvP3Nlcmllcz02Mzg0NyZyZXY9MQo+ICsJfQo+ICsKPiArCXJldHVybiBm YWxzZTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGRybV9kcF9tc3RfaXNfdmlydHVhbF9kcGNkKCkg LSBUZXN0IGZvciBTeW5hcHRpeCBEU0MgcXVpcmsKCkkgdGhpbmsgeW91IG1lc3NlZCB1cCBhIGJ1 bmNoIG9mIHlvdXIga2VybmVsZG9jIGNvbW1lbnRzIGJ5IGFjY2lkZW50IF4KPiArICogQHBvcnQ6 IFRoZSBwb3J0IHRvIGNoZWNrCj4gKyAqCj4gKyAqIFNvbWUgU3luYXB0aXggTVNUIGh1YnMgc3Vw cG9ydCBEU0MgZXZlbiB0aG91Z2ggdGhleSBkbyBub3Qgc3VwcG9ydAo+IHZpcnR1YWwKPiArICog RFBDRC4gVGhpcyBpcyBhIHF1aXJrLgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiB0cnVlIGlm IHRoZSBTeW5hcHRpeCB3b3JrYXJvdW5kIGlzIHJlcXVpcmVkLCBmYWxzZSBvdGhlcndpc2UKPiAr ICovCj4gK3N0YXRpYyBib29sIGRybV9kcF9tc3RfZHNjX3N5bmFwdGl4X3dvcmthcm91bmQoc3Ry dWN0IGRybV9kcF9tc3RfcG9ydAo+ICpwb3J0KQo+ICt7Cj4gKwl1OCBkYXRhWzNdID0geyAwIH07 Cj4gKwl1MzIgZGV2X2lkOwo+ICsJc3RydWN0IGRybV9kcF9hdXggKnBoeXNfYXV4Owo+ICsKPiAr CS8qIFRoZSBodWIgbXVzdCBiZSBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIGNvbm5lY3RvciAq Lwo+ICsJaWYgKHBvcnQtPm1nci0+bXN0X3ByaW1hcnkgIT0gcG9ydC0+cGFyZW50KQo+ICsJCXJl dHVybiBmYWxzZTsKPiArCj4gKwlwaHlzX2F1eCA9IHBvcnQtPm1nci0+YXV4Owo+ICsJaWYgKGRy bV9kcF9kcGNkX3JlYWQocGh5c19hdXgsIERQX0JSQU5DSF9PVUksIGRhdGEsIDMpIDwgMCkKPiAr CQlyZXR1cm4gZmFsc2U7Cj4gKwlkZXZfaWQgPSAoZGF0YVswXSA8PCAxNikgJiAoZGF0YVsxXSA8 PCA4KSAmIGRhdGFbM107Cj4gKwkvKiBTeW5hcHRpeCBkZXZpY2UgSUQgKi8KPiArCWlmIChkZXZf aWQgIT0gMHg5MENDMjQpCj4gKwkJcmV0dXJuIGZhbHNlOwoKTW9yZSB0aGluZ3MgSSdtIG5vdGlj aW5nIG5vdyB0aGF0IEkndmUgZ290IHRoaXMgYXBwbGllZCBsb2NhbGx5LiBJIG9yaWdpbmFsbHkK c3VnZ2VzdGVkIHVzaW5nIG9ubHkgdGhlIGRwY2RfcXVpcmtzIGxpc3QgaGVyZSwgYnV0IGl0IGFw cGVhcnMgSSBkaWRuJ3QgcmVhZAp0aGlzIGZ1bmN0aW9uIGNsb3NlbHkgZW5vdWdoIGFuZCBtaXNz ZWQgdGhlIGZhY3QgeW91IGhhdmUgdG8gcmVhZCBmcm9tCm11bHRpcGxlIGF1eCBwb3J0cyBoZXJl LiBIdWguCgpTbywgZmlyc3Qgb2ZmIHdlIGRvbid0IG5lZWQgdG8gcmVhZCB0aGUgaWRlbnQgYnkg aGFuZCBoZXJlLCB3ZSBzaG91bGQganVzdCB1c2UKdGhlIGhlbHBlciBpbiBkcm1fZHBfcmVhZF9k ZXNjKCkgYW5kIGFkZCBhIHF1aXJrIGZvciB0aGlzIGludG8KZHBjZF9xdWlya19saXN0W10uIE1h eWJlIHNvbWV0aGluZyBsaWtlCkRQX0RQQ0RfUVVJUktfRFNDX1dJVEhPVVRfVklSVFVBTF9EUENE LiBUaGlzIGFsc28gaXZlcyB1cyB0aGUgYmVuZWZpdCBvZgpoYXZpbmcgdGhpcyBpbmZvcm1hdGlv biBwcmludGVkIG91dCBpbnRvIHRoZSBrZXJuZWwgZGVidWcgbG9nLgoKUGx1cywgeW91IGFjY2lk ZW50YWxseSBnbyBvdXQgb2YgYm91bmRzIHdoZW4geW91IGNoZWNrIGRhdGFbM10gYW55d2F5IDsp Cgo+ICsKPiArCWlmIChkcm1fZHBfZHBjZF9yZWFkKHBoeXNfYXV4LCBEUF9EUENEX1JFViwgZGF0 YSwgMSkgPCAwKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCS8qIE11c3QgYmUgRFBDRCByZXYuIDEu NCBvciBsYXRlciAqLwo+ICsJaWYgKGRhdGFbMF0gPCBEUF9EUENEX1JFVl8xNCkKPiArCQlyZXR1 cm4gZmFsc2U7CgpObyBuZWVkIHRvIHJlcmVhZCB0aGUgRFBDRCBoZXJlLCBqdXN0IHVzZSB0aGUg Y2FjaGVkIGRwY2QgaW4gcG9ydC0+bWdyLT5lZGlkCgo+ICsKPiArCWlmIChkcm1fZHBfZHBjZF9y ZWFkKCZwb3J0LT5hdXgsCj4gKwkJCURQX0RPV05TVFJFQU1QT1JUX1BSRVNFTlQsIGRhdGEsIDEp IDwgMCkKTW9yZSBpbmRlbnRpbmcgdG8gZml4Cgo+ICsJCXJldHVybiBmYWxzZTsKPiArCS8qIE11 c3Qgbm90IGJlIGEgVkdBIGNvbnZlcnRlciAqLwo+ICsJaWYgKChkYXRhWzBdICYgNykgPT0gMykK TGV0J3MganVzdCB1c2UgdGhlIHByb3BlciBtYWNyb3MgZnJvbSBpbmNsdWRlL2RybS9kcm1fZHBf aGVscGVyLmggaGVyZQoKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4g K30KPiArCj4gKy8qKgo+ICsgKiBkcm1fZHBfbXN0X2RzY19hdXhfZm9yX3BvcnQoKSAtIEZpbmQg dGhlIGNvcnJlY3QgYXV4IGZvciBEU0MKPiArICogQHBvcnQ6IFRoZSBwb3J0IHRvIGNoZWNrLiBB IGxlYWYgb2YgdGhlIE1TVCB0cmVlIHdpdGggYW4gYXR0YWNoZWQKPiBkaXNwbGF5Lgo+ICsgKgo+ ICsgKiBEZXBlbmRpbmcgb24gdGhlIHNpdHVhdGlvbiwgRFNDIG1heSBiZSBlbmFibGVkIHZpYSB0 aGUgZW5kcG9pbnQgYXV4LAo+ICsgKiB0aGUgaW1tZWRpYXRlbHkgdXBzdHJlYW0gYXV4LCBvciB0 aGUgY29ubmVjdG9yJ3MgcGh5c2ljYWwgYXV4Lgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBO VUxMIGlmIERTQyBjYW5ub3QgYmUgZW5hYmxlZCBvbiB0aGlzIHBvcnQsIG90aGVyd2lzZSB0aGUg YXV4IGRldmljZQo+ICsgKi8KPiArc3RydWN0IGRybV9kcF9hdXggKmRybV9kcF9tc3RfZHNjX2F1 eF9mb3JfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0Cj4gKnBvcnQpCj4gK3sKPiArCXU4IHVw c3RyZWFtX2RzYyA9IDA7Cj4gKwl1OCBlbmRwb2ludF9kc2MgPSAwOwo+ICsJdTggZW5kcG9pbnRf ZmVjID0gMDsKPiArCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKmltbWVkaWF0ZV91cHN0cmVhbV9w b3J0Owo+ICsJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqZmVjX3BvcnQ7Cj4gKwo+ICsJaWYgKHBv cnQgJiYgcG9ydC0+cGFyZW50KQo+ICsJCWltbWVkaWF0ZV91cHN0cmVhbV9wb3J0ID0gcG9ydC0+ cGFyZW50LT5wb3J0X3BhcmVudDsKPiArCWVsc2UKPiArCQlpbW1lZGlhdGVfdXBzdHJlYW1fcG9y dCA9IE5VTEw7Cj4gKwo+ICsJZmVjX3BvcnQgPSBpbW1lZGlhdGVfdXBzdHJlYW1fcG9ydDsKPiAr CXdoaWxlIChmZWNfcG9ydCkgewo+ICsJCWlmICghZmVjX3BvcnQtPmZlY19jYXBhYmxlKQo+ICsJ CQlyZXR1cm4gTlVMTDsKPiArCj4gKwkJZmVjX3BvcnQgPSBmZWNfcG9ydC0+cGFyZW50LT5wb3J0 X3BhcmVudDsKPiArCX0KPiArCj4gKwlpZiAoaW1tZWRpYXRlX3Vwc3RyZWFtX3BvcnQpIHsKPiAr CQlpZiAoZHJtX2RwX2RwY2RfcmVhZCgmaW1tZWRpYXRlX3Vwc3RyZWFtX3BvcnQtPmF1eCwKPiAr CQkJCURQX0RTQ19TVVBQT1JULCAmdXBzdHJlYW1fZHNjLCAxKSA8IDApCj4gKwkJCXJldHVybiBO VUxMOwo+ICsJfQo+ICsKPiArCWlmIChkcm1fZHBfZHBjZF9yZWFkKCZwb3J0LT5hdXgsCj4gKwkJ CURQX0RTQ19TVVBQT1JULCAmZW5kcG9pbnRfZHNjLCAxKSA8IDApCj4gKwkJcmV0dXJuIE5VTEw7 Cj4gKwlpZiAoZHJtX2RwX2RwY2RfcmVhZCgmcG9ydC0+YXV4LAo+ICsJCQlEUF9GRUNfQ0FQQUJJ TElUWSwgJmVuZHBvaW50X2ZlYywgMSkgPCAwKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCS8q IEVucG9pbnQgZGVjb21wcmVzc2lvbiB3aXRoIERQLXRvLURQIHBlZXIgZGV2aWNlICovCj4gKwlp ZiAoZHJtX2RwX21zdF9pc192aXJ0dWFsX2RwY2QoaW1tZWRpYXRlX3Vwc3RyZWFtX3BvcnQpCj4g KwkJCSYmICh1cHN0cmVhbV9kc2MgJiAweDIpIC8qIERTQyBwYXNzdGhyb3VnaCAqLwo+ICsJCQkm JiAoZW5kcG9pbnRfZmVjICYgRFBfRkVDX0NBUEFCTEUpCj4gKwkJCSYmIChlbmRwb2ludF9kc2Mg JiBEUF9EU0NfREVDT01QUkVTU0lPTl9JU19TVVBQT1JURUQpKQo+ICsJCXJldHVybiAmcG9ydC0+ YXV4Owo+ICsKPiArCS8qIFZpcnR1YWwgRFBDRCBkZWNvbXByZXNzaW9uIHdpdGggRFAtdG8tRFAg cGVlciBkZXZpY2UgKi8KPiArCWlmIChkcm1fZHBfbXN0X2lzX3ZpcnR1YWxfZHBjZChpbW1lZGlh dGVfdXBzdHJlYW1fcG9ydCkpCj4gKwkJcmV0dXJuICZpbW1lZGlhdGVfdXBzdHJlYW1fcG9ydC0+ YXV4Owo+ICsKPiArCS8qIFZpcnR1YWwgRFBDRCBkZWNvbXByZXNzaW9uIHdpdGggRFAtdG8tSERN SSBvciBWaXJ0dWFsIERQIFNpbmsgKi8KPiArCWlmIChkcm1fZHBfbXN0X2lzX3ZpcnR1YWxfZHBj ZChwb3J0KSkKPiArCQlyZXR1cm4gJnBvcnQtPmF1eDsKPiArCj4gKwkvKiBTeW5hcHRpeCB3b3Jr YXJvdW5kICovCj4gKwlpZiAoZHJtX2RwX21zdF9kc2Nfc3luYXB0aXhfd29ya2Fyb3VuZChwb3J0 KSkKPiArCQlyZXR1cm4gcG9ydC0+bWdyLT5hdXg7Cj4gKwo+ICsJcmV0dXJuIE5VTEw7Cj4gK30K PiArCj4gKy8qKgo+ICsgKiBkcm1fZHBfbXN0X2RzY19hdXhfZm9yX3BvcnQoKSAtIFJldHJpZXZl IHRoZSBEU0MgY2FwYWJpbGl0eSByZWdpc3RlcnMKPiArICogQHBvcnQ6IFRoZSBwb3J0IHRvIGNo ZWNrLiBBIGxlYWYgb2YgdGhlIE1TVCB0cmVlIHdpdGggYW4gYXR0YWNoZWQKPiBkaXNwbGF5Lgo+ ICsgKiBAY2FwczogT3V0cHV0LiAgQSBwb2ludGVyIHRvIGFuIGFycmF5IGF0IGxlYXN0IDE2IGJ5 dGVzIGxvbmcKPiArICoKPiArICogUmVhZHMgdGhlIERTQyBjYXBhYmlsaXR5IHJlZ2lzdGVycyAo RFNDX1NVUFBPUlQgdGhyb3VnaAo+ICsgKiBCSVRTX1BFUl9QSVhFTF9JTkNSRU1FTlQpIGFuZCBz dG9yZSB0aGVtIGluIHRoZSBnaXZlbiBwb2ludGVyLiBVc2UKPiArICogdGhlIGNvcnJlY3QgYXV4 IGZvciBEU0Mgb24gdGhlIGdpdmVuIHBvcnQuCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIFRo ZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNv ZGUgb24gZmFpbHVyZQo+ICsgKi8KPiAraW50IGRybV9kcF9tc3RfZHNjX2NhcHNfZm9yX3BvcnQo c3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwgdTggKmNhcHMpCj4gK3sKPiArCXN0cnVjdCBk cm1fZHBfYXV4ICphdXggPSBkcm1fZHBfbXN0X2RzY19hdXhfZm9yX3BvcnQocG9ydCk7Cj4gKwo+ ICsJaWYgKCFhdXgpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJcmV0dXJuIGRybV9kcF9k cGNkX3JlYWQoYXV4LCBEUF9EU0NfU1VQUE9SVCwgY2FwcywgMTYpOwo+ICt9Cj4gK0VYUE9SVF9T WU1CT0woZHJtX2RwX21zdF9kc2NfY2Fwc19mb3JfcG9ydCk7Cj4gKwo+ICsvKioKPiArICogZHJt X2RwX21zdF9kc2NfYXV4X2Zvcl9wb3J0KCkgLSBFbmFibGUgRFNDIG9uIGFuIE1TVCBlbmRwb2lu dAo+ICsgKiBAcG9ydDogVGhlIHBvcnQgdG8gY2hlY2suIEEgbGVhZiBvZiB0aGUgTVNUIHRyZWUg d2l0aCBhbiBhdHRhY2hlZAo+IGRpc3BsYXkuCj4gKyAqIEBlbmFibGU6IHRydWUgZm9yIHR1cm4g b24gRFNDLCBmYWxzZSBmb3IgdHVybiBvZmYgRFNDCj4gKyAqCj4gKyAqIFdyaXRlcyBEUF9EU0Nf RU5BQkxFIG9uIHRoZSBjb3JyZWN0IGF1eCBmb3IgdGhlIGdpdmVuIHBvcnQuCj4gKyAqCj4gKyAq IFJldHVybnM6Cj4gKyAqIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBvbiBzdWNjZXNzLCBv ciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24KPiBmYWlsdXJlCj4gKyAqLwo+ICtpbnQgZHJtX2Rw X21zdF9kc2NfZW5hYmxlKHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIGJvb2wgZW5hYmxl KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4ID0gZHJtX2RwX21zdF9kc2NfYXV4X2Zv cl9wb3J0KHBvcnQpOwo+ICsJdTggZW5hYmxlX2RzYyA9IGVuYWJsZSA/IDEgOiAwOwo+ICsKPiAr CWlmICghYXV4KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXJldHVybiBkcm1fZHBfZHBj ZF93cml0ZShhdXgsIERQX0RTQ19FTkFCTEUsICZlbmFibGVfZHNjLCAxKTsKPiArfQoKV2h5IG5v dCBqdXN0IG1ha2UgaXQgc28gdGhhdCBkcm1fZHBfbXN0X2RzY19jYXBzKCkgYWxzbyByZXR1cm5z IHRoZQphcHByb3ByaWF0ZSBkcm1fZHBfYXV4IGRldmljZSB0byB1c2UsIGFuZCB0aGVuIHBhc3Mg dGhlIHBvaW50ZXIgdG8KZHJtX2RwX21zdF9kc2NfZW5hYmxlKCkgaW5zdGVhZCBvZiBwYXNzaW5n IGl0IHRoZSBkcm1fZHBfbXN0X3BvcnQqPyBUaGF0IHdheQp3ZSB3b24ndCBoYXZlIHRvIHByb2Jl IGZvciB0aGVzZSBjYXBzIHR3aWNlLgoKPiArRVhQT1JUX1NZTUJPTChkcm1fZHBfbXN0X2RzY19l bmFibGUpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCj4g Yi9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCj4gaW5kZXggZmE5NzM3NzNhNGE3Li4w ZjcwZGM4ZGZiZWIgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIu aAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmgKPiBAQCAtNjc0LDYgKzY3 NCw5IEBAIGludCBfX211c3RfY2hlY2sgZHJtX2RwX21zdF9hdG9taWNfY2hlY2soc3RydWN0Cj4g ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ICB2b2lkIGRybV9kcF9tc3RfZ2V0X3BvcnRfbWFs bG9jKHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpOwo+ICB2b2lkIGRybV9kcF9tc3RfcHV0 X3BvcnRfbWFsbG9jKHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpOwo+ICAKPiAraW50IGRy bV9kcF9tc3RfZHNjX2NhcHNfZm9yX3BvcnQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwg dTggKmNhcHMpOwo+ICtpbnQgZHJtX2RwX21zdF9kc2NfZW5hYmxlKHN0cnVjdCBkcm1fZHBfbXN0 X3BvcnQgKnBvcnQsIGJvb2wgZW5hYmxlKTsKPiArCj4gIGV4dGVybiBjb25zdCBzdHJ1Y3QgZHJt X3ByaXZhdGVfc3RhdGVfZnVuY3MKPiBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlX2Z1bmNzOwo+ ICAKPiAgLyoqCi0tIApDaGVlcnMsCglMeXVkZSBQYXVsCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWw=