From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: Re: [RFC] drm: implement generic firmware eviction Date: Fri, 26 Aug 2016 09:57:35 +0200 Message-ID: <29bc1dab-7445-8470-f59b-6df908e83a3f@redhat.com> References: <20160826000056.12806-1-dh.herrmann@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160826000056.12806-1-dh.herrmann@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: David Herrmann , dri-devel@lists.freedesktop.org Cc: Daniel Vetter , Maxime Ripard , Rob Herring , devicetree@vger.kernel.org List-Id: devicetree@vger.kernel.org SGksCgpPbiAyNi0wOC0xNiAwMjowMCwgRGF2aWQgSGVycm1hbm4gd3JvdGU6Cj4gUHJvdmlkZSBh IGdlbmVyaWMgRFJNIGhlbHBlciB0aGF0IGV2aWN0cyBhbGwgY29uZmxpY3RpbmcgZmlybXdhcmUK PiBmcmFtZWJ1ZmZlcnMsIGRldmljZXMsIGFuZCBkcml2ZXJzLiBUaGUgbmV3IGhlbHBlciBpcyBj YWxsZWQKPiBkcm1fZXZpY3RfZmlybXdhcmUoKSwgYW5kIHRha2VzIGEgZmxhZ3NldCBjb250cm9s bGluZyB3aGljaCBmaXJtd2FyZSB0bwo+IGtpY2sgb3V0Lgo+Cj4gVGhpcyBpcyBtZWFudCB0byBi ZSB1c2VkIGJ5IGRyaXZlcnMgaW4gdGhlaXIgLT5wcm9iZSgpIGNhbGxiYWNrcyBvZiB0aGVpcgo+ IHBhcmVudCBidXMsIGJlZm9yZSBjYWxsaW5nIGludG8gZHJtX2Rldl9yZWdpc3RlcigpLgo+Cj4g U2lnbmVkLW9mZi1ieTogRGF2aWQgSGVycm1hbm4gPGRoLmhlcnJtYW5uQGdtYWlsLmNvbT4KPiAt LS0KPiBIZXkKPgo+IFRoaXMgaXMganVzdCBjb21waWxlLXRlc3RlZCBmb3Igbm93LiBJIGp1c3Qg d2FudCB0byBnZXQgc29tZSBjb21tZW50cyBvbiB0aGUKPiBkZXNpZ24uIEkgZGVjaWRlZCB0byBk cm9wIHRoZSBzeXNmYiBpbmZyYXN0cnVjdHVyZSBhbmQgcmF0aGVyIGp1c3QgdXNlIHRoaXMKPiBn ZW5lcmljIGhlbHBlci4gSXQga2VlcHMgdGhpbmdzIHNpbXBsZSBhbmQgc2hvdWxkIHdvcmsganVz dCBmaW5lIGZvciBhbGwKPiByZWFzb25hYmxlIHVzZS1jYXNlcy4KPgo+IFRoaXMgd2lsbCB3b3Jr IHdpdGggU2ltcGxlRFJNIG91dC1vZi10aGUtYm94IG9uIHg4Ni4KPgo+IEFyY2hpdGVjdHVyZXMg d2l0aCBkeW5hbWljIHNpbXBsZS1mcmFtZWJ1ZmZlciBkZXZpY2VzIGFyZSBub3Qgc3VwcG9ydGVk IHlldC4gSQo+IGFjdHVhbGx5IGhhdmUgbm8gaWRlYSB3aGF0IHRoZSBzdHJhdGVneSB0aGVyZSBp cz8gQ2FuIHRoZSBEZXZpY2VUcmVlIHBlb3BsZSBjb21lCj4gdXAgd2l0aCBzb21ldGhpbmc/IEFt IEkgc3VwcG9zZWQgdG8gY2FsbCBvZl9wbGF0Zm9ybV9kZXBvcHVsYXRlKCk/IE9yCj4gb2ZfZGV0 YWNoX25vZGUoKT8gT3Igd2hhdD8KCkknbSBub3Qgc3VyZSB3ZSB3b3VsZCB3YW50IHRvIHJlbW92 ZSB0aGUgZGV2aWNlIGF0IGFsbCwgd2UgY2VydGFpbmx5IHNob3VsZCBub3QKYmUgcmVtb3Zpbmcg dGhlIGR0X25vZGUgZnJvbSB0aGUgZGV2aWNldHJlZSBJTUhPLiBIYXZpbmcgdGhhdCBhcm91bmQg dG8gc2VlIGhvdwp0aGUgYm9vdGxvYWRlciBzZXQgdGhpbmdzIHVwIGlzIHJlYWxseSB1c2VmdWwg Zm9yIGRlYnVnZ2luZyBhbmQgbm9ybWFsbHkgd2UKc2hvdWxkIG5ldmVyIG1vZGlmeSB0aGUgZGV2 aWNldHJlZSBhcyBzZXQgdXAgYnkgdGhlIGJvb3Rsb2FkZXIuCgpXaHkgbm90IGp1c3QgdW5iaW5k IHRoZSBkcml2ZXIgZnJvbSB0aGUgcGxhdGZvcm0gZGV2aWNlPyBUaGF0IHNob3VsZCBiZSBlbm91 Z2guCgpSZWdhcmRzLAoKSGFucwoKCgoKPiBMb29raW5nIGF0IGRyaXZlcnMvb2Yve3BsYXRmb3Jt LGR5bmFtaWN9LmMsIEkgY2Fubm90IHNlZSBob3cgdGhpcyBpcyBzdXBwb3NlZCB0bwo+IHdvcmsg YXQgYWxsLiBXaG8gcHJvdGVjdHMgcGxhdGZvcm1fZGV2aWNlX2RlbCgpIGZyb20gYmVpbmcgY2Fs bGVkIGluIHBhcmFsbGVsPwo+IEFsc286IERvZXMgYW55IHBsYXRmb3JtIG1ha2UgdXNlIHRoZSBv ZiAnZGlzcGxheTonIGVudHJ5IGluICdzaW1wbGUtZnJhbWVidWZmZXInCj4gRFQgbm9kZXM/IElm IHllcywgaG93IGRvIEkgZ2V0IGFjY2VzcyB0byBpdD8gQW5kIHdoeSBkb24ndCB2YzQvc3VuNGkg bWFrZSB1c2Ugb2YKPiBpdCwgcmF0aGVyIHRoYW4gZmFsbGluZyBiYWNrIHRvIHJlbW92ZV9jb25m bGljdGluZ19mcmFtZWJ1ZmZlcnMoKT8KPgo+IFRoYW5rcwo+IERhdmlkCj4KPiAgZHJpdmVycy9n cHUvZHJtL2RybV9kcnYuYyB8IDI1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCj4gIGluY2x1ZGUvZHJtL2RybVAuaCAgICAgICAgfCAgMTMgKysrCj4gIDIg ZmlsZXMgY2hhbmdlZCwgMjcwIGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwo+IGluZGV4IDA3 NzM1NDcuLjU4MWMzNDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKPiBAQCAtMjYsMTIgKzI2LDE2IEBACj4g ICAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiAgICovCj4KPiArI2luY2x1ZGUgPGxpbnV4 L2NvbnNvbGUuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2ZiLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9mcy5oPgo+ICAjaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGVwYXJhbS5oPgo+ICAjaW5jbHVkZSA8bGlu dXgvbW91bnQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9z bGFiLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC92dC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4K PiAgI2luY2x1ZGUgImRybV9jcnRjX2ludGVybmFsLmgiCj4gICNpbmNsdWRlICJkcm1fbGVnYWN5 LmgiCj4gQEAgLTg4MSw2ICs4ODUsMjU5IEBAIHZvaWQgZHJtX2Rldl91bnJlZ2lzdGVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZGV2X3VucmVnaXN0 ZXIpOwo+Cj4gK3N0cnVjdCBkcm1fZXZpY3RfY3R4IHsKPiArCXN0cnVjdCBhcGVydHVyZXNfc3Ry dWN0ICphcDsKPiArCXVuc2lnbmVkIGludCBmbGFnczsKPiArfTsKPiArCj4gK3N0YXRpYyBib29s IGRybV9ldmljdF9tYXRjaF9yZXNvdXJjZShzdHJ1Y3QgZHJtX2V2aWN0X2N0eCAqY3R4LAo+ICsJ CQkJICAgICBzdHJ1Y3QgcmVzb3VyY2UgKm1lbSkKPiArewo+ICsJc3RydWN0IGFwZXJ0dXJlICpn Owo+ICsJdW5zaWduZWQgaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGN0eC0+YXAtPmNv dW50OyArK2kpIHsKPiArCQlnID0gJmN0eC0+YXAtPnJhbmdlc1tpXTsKPiArCj4gKwkJaWYgKG1l bS0+c3RhcnQgPT0gZy0+YmFzZSkKPiArCQkJcmV0dXJuIHRydWU7Cj4gKwkJaWYgKG1lbS0+c3Rh cnQgPj0gZy0+YmFzZSAmJiBtZW0tPmVuZCA8IGctPmJhc2UgKyBnLT5zaXplKQo+ICsJCQlyZXR1 cm4gdHJ1ZTsKPiArCQlpZiAoKGN0eC0+ZmxhZ3MgJiBEUk1fRVZJQ1RfVkJFKSAmJiBtZW0tPnN0 YXJ0ID09IDB4QTAwMDApCj4gKwkJCXJldHVybiB0cnVlOwo+ICsJfQo+ICsKPiArCXJldHVybiBm YWxzZTsKPiArfQo+ICsKPiArc3RhdGljIGludCBkcm1fZXZpY3RfcGxhdGZvcm1fZGV2aWNlKHN0 cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqdXNlcmRhdGEpCj4gK3sKPiArCXN0cnVjdCBkcm1fZXZp Y3RfY3R4ICpjdHggPSB1c2VyZGF0YTsKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYg PSB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KTsKPiArCXN0cnVjdCByZXNvdXJjZSAqbWVtOwo+ICsK PiArCS8qCj4gKwkgKiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHN0YXRpYyBkZXZpY2VzIGhl cmUgKGkuZS4sIHRoZXkgY2FycnkKPiArCSAqIGluZm9ybWF0aW9uIHZpYSBhIHN0YXRpY2FsbHkg YWxsb2NhdGVkIHBsYXRmb3JtIGRhdGEgZmllbGQpLiBBbnkKPiArCSAqIGR5bmFtaWNhbGx5IGFs bG9jYXRlZCBkZXZpY2VzIGhhdmUgc2VwYXJhdGUgb3duZXJzaGlwIG1vZGVscyBhbmQKPiArCSAq IG11c3QgYmUgaGFuZGxlZCB2aWEgdGhlaXIgcmVzcGVjdGl2ZSBtYW5hZ2VtZW50IGNhbGxzLgo+ ICsJICovCj4gKwlpZiAoIWRldl9nZXRfcGxhdGRhdGEoJnBkZXYtPmRldikpCj4gKwkJcmV0dXJu IDA7Cj4gKwlpZiAoIXBkZXYtPm5hbWUpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYgKCFzdHJj bXAocGRldi0+bmFtZSwgInNpbXBsZS1mcmFtZWJ1ZmZlciIpKSB7Cj4gKwkJbWVtID0gcGxhdGZv cm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiArCQlpZiAoIW1lbSkK PiArCQkJcmV0dXJuIDA7Cj4gKwkJaWYgKCFkcm1fZXZpY3RfbWF0Y2hfcmVzb3VyY2UoY3R4LCBt ZW0pKQo+ICsJCQlyZXR1cm4gMDsKPiArCj4gKwkJcGxhdGZvcm1fZGV2aWNlX2RlbChwZGV2KTsK PiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBkcm1fZXZpY3Rf cGxhdGZvcm0oc3RydWN0IGRybV9ldmljdF9jdHggKmN0eCkKPiArewo+ICsJLyoKPiArCSAqIEVh cmx5LWJvb3QgYXJjaGl0ZWN0dXJlIHNldHVwIGFuZCBib290LWxvYXJkZXJzIHNvbWV0aW1lcyBj cmVhdGUKPiArCSAqIHByZWxpbWluYXJ5IHBsYXRmb3JtIGRldmljZXMgd2l0aCBhIGdlbmVyaWMg ZnJhbWVidWZmZXIgc2V0dXAuIFRoaXMKPiArCSAqIGFsbG93cyBncmFwaGljcyBhY2Nlc3MgZHVy aW5nIGJvb3QtdXAsIHdpdGhvdXQgYSByZWFsIGdyYXBoaWNzCj4gKwkgKiBkcml2ZXIgbG9hZGVk LiBIb3dldmVyLCBvbmNlIGEgcmVhbCBncmFwaGljcyBkcml2ZXIgdGFrZXMgb3Zlciwgd2UKPiAr CSAqIGhhdmUgdG8gZGVzdHJveSB0aG9zZSBwbGF0Zm9ybSBkZXZpY2VzLiBJbiB0aGUgbGVnYWN5 IGZiZGV2IGNhc2UsIHdlCj4gKwkgKiBqdXN0IHVzZWQgdG8gdW5sb2FkIHRoZSBmYmRldiBkcml2 ZXIuIEhvd2V2ZXIsIHRvIG1ha2Ugc3VyZSBhbnkga2luZAo+ICsJICogb2YgZHJpdmVyIGlzIHVu bG9hZGVkLCB0aGUgcGxhdGZvcm0tZXZpY3Rpb24gY29kZSBoZXJlIHNpbXBseQo+ICsJICogcmVt b3ZlcyBhbnkgY29uZmxpY3RpbmcgcGxhdGZvcm0gZGV2aWNlIGRpcmVjdGx5LiBUaGlzIGNhdXNl cyBhbnkKPiArCSAqIGJvdW5kIGRyaXZlciB0byBiZSBkZXRhY2hlZCwgYW5kIHRoZW4gcmVtb3Zl cyB0aGUgZGV2aWNlIGVudGlyZWx5IHNvCj4gKwkgKiBpdCBjYW5ub3QgYmUgYm91bmQgdG8gbGF0 ZXIgb24uCj4gKwkgKgo+ICsJICogUGxlYXNlIG5vdGUgdGhhdCBhbnkgc3VjaCBwbGF0Zm9ybSBk ZXZpY2UgbXVzdCBiZSByZWdpc3RlcmVkIGJ5Cj4gKwkgKiBlYXJseSBhcmNoaXRlY3R1cmUgc2V0 dXAgY29kZS4gSWYgdGhleSBhcmUgcmVnaXN0ZXJlZCBhZnRlciByZWd1bGFyCj4gKwkgKiBEUk0g ZHJpdmVycywgdGhpcyB3aWxsIGZhaWwgaG9ycmlibHkuCj4gKwkgKi8KPiArCj4gKwlzdGF0aWMg REVGSU5FX01VVEVYKGxvY2spOwo+ICsJaW50IHJldDsKPiArCj4gKwkvKgo+ICsJICogSW4gY2Fz ZSBvZiBzdGF0aWMgcGxhdGZvcm0tZGV2aWNlcywgd2UgbXVzdCBpdGVyYXRlIHRoZSBidXMgYW5k Cj4gKwkgKiByZW1vdmUgdGhlbSBtYW51YWxseS4gV2Uga25vdyB0aGF0IHdlJ3JlIHRoZSBvbmx5 IGNvZGUgdGhhdCBtaWdodAo+ICsJICogcmVtb3ZlIHRoZW0sIHNvIGEgc2ltcGxlIHN0YXRpYyBs b2NrIHNlcmlhbGl6ZXMgYWxsIGNhbGxzIGhlcmUuIFdlCj4gKwkgKiBtdXN0IG1ha2Ugc3VyZSBv dXIgZXZpY3Rpb24gY2FsbGJhY2sgbGVhdmVzIGFueSBub24tc3RhdGljIHBsYXRmb3JtCj4gKwkg KiBkZXZpY2VzIHVudG91Y2hlZCwgdGhvdWdoLgo+ICsJICoKPiArCSAqIFhYWDogQVJNIGFuZCBv dGhlciBPRiB1c2VycyBzaG91bGQgcmVhbGx5IG1ha2Ugc3VyZSB0byBhZGQgdGhlaXIgb3duCj4g KwkgKiAgICAgIGV2aWN0aW9uIGNvZGUgaGVyZSwgcG9zc2libHkgdXNpbmcgdGhlICdkaXNwbGF5 JyBEVC1oYW5kbGUgYXMKPiArCSAqICAgICAgZGVmaW5lZCBieSB0aGUgJ3NpbXBsZS1mcmFtZWJ1 ZmZlcicgT0Ytbm9kZS4KPiArCSAqLwo+ICsJbXV0ZXhfbG9jaygmbG9jayk7Cj4gKwlyZXQgPSBi dXNfZm9yX2VhY2hfZGV2KCZwbGF0Zm9ybV9idXNfdHlwZSwgTlVMTCwgY3R4LAo+ICsJCQkgICAg ICAgZHJtX2V2aWN0X3BsYXRmb3JtX2RldmljZSk7Cj4gKwltdXRleF91bmxvY2soJmxvY2spOwo+ ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBkcm1fZXZpY3RfZmJkZXYoc3Ry dWN0IGRybV9ldmljdF9jdHggKmN0eCkKPiArewo+ICsJLyoKPiArCSAqIFdlIGhhdmUgMiBkaWZm ZXJlbnQgY2FzZXMgd2hlcmUgZmJkZXYgZHJpdmVycyBjYW4gb3BlcmF0ZSBvbiB0aGUKPiArCSAq IHNhbWUgZGV2aWNlcyBhcyBEUk0gZHJpdmVyczoKPiArCSAqCj4gKwkgKiAgIG8gVHdvIGRyaXZl cnMgZXhpc3QgZm9yIHRoZSBzYW1lIGRldmljZSwgb25lIERSTSBkcml2ZXIgYW5kIG9uZQo+ICsJ ICogICAgIGZiZGV2IGRyaXZlciAoZS5nLiwgbnZpZGlhZmIgYW5kIG5vdXZlYXUpLiBJbiB0aG9z ZSBjYXNlcywgYm90aAo+ICsJICogICAgIGRyaXZlcnMgYmluZCB0byB0aGUgc2FtZSByZWFsIGh3 LWRldmljZSBhbmQgZHJpdmVyIGNvcmUgdGFrZXMKPiArCSAqICAgICBjYXJlIG9mIGFueSBjb25m bGljdHMuCj4gKwkgKgo+ICsJICogICBvIEEgZ2VuZXJpYyBmYmRldiBkcml2ZXIgdXNlcyBzb21l IHBzZXVkby1kZXZpY2UgdG8gcHJvdmlkZQo+ICsJICogICAgIGVhcmx5LWJvb3QgZ3JhcGhpY3Mg YWNjZXNzIG9yIHNvbWUgb3RoZXIga2luZCBvZiBnZW5lcmljIGRpc3BsYXkKPiArCSAqICAgICBk cml2ZXIuIEF0IHRoZSBzYW1lIHRpbWUsIGEgRFJNIGRyaXZlciBleGlzdHMgdGhhdCBjYW4gcnVu IHRoZQo+ICsJICogICAgIHJlYWwgaGFyZHdhcmUgKGUuZy4sIHZlc2FmYi9lZmlmYiBhbmQgaTkx NSkuCj4gKwkgKgo+ICsJICogSWYgcG9zc2libGUsIGRyaXZlciBjb3JlIHRha2VzIGNhcmUgb2Yg YW55IGNvbmZsaWN0cyBhbmQgcHJldmVudHMKPiArCSAqIHR3byBkcml2ZXJzIGZyb20gYmVpbmcg Ym91bmQgdG8gdGhlIHNhbWUgZGV2aWNlLiBIb3dldmVyLCBpbiBzb21lCj4gKwkgKiBjYXNlcyB0 aGlzIGlzIG5vdCBwb3NzaWJsZS4gV2UgdGhlbiB1c2UKPiArCSAqIHJlbW92ZV9jb25mbGljdGlu Z19mcmFtZWJ1ZmZlcnMoKSB0byBtYXRjaCB0aGUgYXBlcnR1cmVzIG9mIHRoZSBEUk0KPiArCSAq IGRldmljZSBhZ2FpbnN0IGFsbCBleGlzdGluZyBmYmRldiBkZXZpY2VzLCBldmljdGluZyBhbnkg Y29uZmxpY3RpbmcKPiArCSAqIGZiZGV2IGRyaXZlcnMuIEFkZGl0aW9uYWxseSwgaWYgcmVxdWVz dGVkLCBhbnkgVkJFIGRyaXZlciBpcyBldmljdGVkCj4gKwkgKiBhcyB3ZWxsLgo+ICsJICoKPiAr CSAqIE5vdGUgdGhhdCB0aGlzIGJyZWFrcyBob3JyaWJseSBpZiBhbiBmYmRldiBkcml2ZXIgaXMg cHJvYmVkIGFmdGVyIGEKPiArCSAqIERSTSBkcml2ZXIuIFNvIG1ha2Ugc3VyZSB3aGVuZXZlciBz dWNoIGNvbmZsaWN0cyBhcmUgcG9zc2libGUsIHRoZQo+ICsJICogZmJkZXYgZHJpdmVycyBtdXN0 IGJlIHByb2JlZCBpbiBlYXJseSBib290LiBJZiB5b3UgY2Fubm90IGd1YXJhbnRlZQo+ICsJICog dGhhdCwgeW91IGJldHRlciBtYWtlIHN1cmUgdGhhdCB0aGUgZHJpdmVyIGNvcmUgcHJldmVudHMg Ym90aAo+ICsJICogZHJpdmVycyBmcm9tIGJlaW5nIHByb2JlZCBpbiBwYXJhbGxlbC4KPiArCSAq Lwo+ICsKPiArI2lmICFkZWZpbmVkKENPTkZJR19GQikKPiArCXJldHVybiAwOwo+ICsjZWxzZQo+ ICsJcmV0dXJuIHJlbW92ZV9jb25mbGljdGluZ19mcmFtZWJ1ZmZlcnMoY3R4LT5hcCwgImRybSIs Cj4gKwkJCQkJICAgICAgICEhKGN0eC0+ZmxhZ3MgJiBEUk1fRVZJQ1RfVkJFKSk7Cj4gKyNlbmRp Zgo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGRybV9ldmljdF92Z2Fjb24odm9pZCkKPiArewo+ICsJ LyoKPiArCSAqIFRoZSBWR0FDT04gY29uc29sZSBkcml2ZXIgcG9rZXMgYXQgVkdBIHJlZ2lzdGVy cyByYW5kb21seS4gSWYgYSBEUk0KPiArCSAqIGRyaXZlciBjYW5ub3Qga2VlcCB0aGUgVkdBIHN1 cHBvcnQgYWxpdmUsIGl0IGJldHRlciBtYWtlcyBzdXJlIHRvCj4gKwkgKiB1bmxvYWQgVkdBQ09O IGJlZm9yZSBwcm9iaW5nLgo+ICsJICoKPiArCSAqIFVubG9hZGluZyBWR0FDT04gcmVxdWlyZXMg dXMgdG8gZmlyc3QgZm9yY2UgZHVtbXljb24gdG8gdGFrZSBvdmVyCj4gKwkgKiBmcm9tIHZnYWNv biAoYnV0IG9ubHkgaWYgdmdhY29uIGlzIHJlYWxseSBpbiB1c2UpLCBmb2xsb3dlZCBieSBhCj4g KwkgKiBkZXJlZ2lzdHJhdGlvbiBvZiB2Z2Fjb24uIE5vdGUgdGhhdCB0aGlzIHByZXZlbnRzIHZn YWNvbiBmcm9tIGJlaW5nCj4gKwkgKiB1c2VkIGFnYWluIGFmdGVyIHRoZSBEUk0gZHJpdmVyIGlz IHVubG9hZGVkLiBCdXQgdGhhdCBpcyB1c3VhbGx5Cj4gKwkgKiBmaW5lLCBzaW5jZSBWR0Egc3Rh dGUgaXMgcmFyZWx5IHJlc3RvcmVkIG9uIGRyaXZlci11bmxvYWQsIGFueXdheS4KPiArCSAqCj4g KwkgKiBOb3RlIHRoYXQgd2UgcmVseSBvbiBWR0FDT04gdG8gYmUgcHJvYmVkIGluIGVhcmx5IGJv b3QgKGFjdHVhbGx5Cj4gKwkgKiBkb25lIGJ5IEFSQ0ggc2V0dXAgY29kZSkuIElmIGl0IGlzIHBy b2JlZCBhZnRlciBEUk0gZHJpdmVycywgdGhpcwo+ICsJICogd2lsbCBmYWlsIGhvcnJpYmx5LiBZ b3UgYmV0dGVyIG1ha2Ugc3VyZSBWR0FDT04gaXMgcHJvYmVkIGVhcmx5IGFuZAo+ICsJICogRFJN IGRyaXZlcnMgYXJlIHByb2JlZCBhcyBub3JtYWwgbW9kdWxlcy4KPiArCSAqLwo+ICsKPiArI2lm ICFkZWZpbmVkKENPTkZJR19WR0FfQ09OU09MRSkKPiArCXJldHVybiAwOwo+ICsjZWxpZiAhZGVm aW5lZChDT05GSUdfRFVNTVlfQ09OU09MRSkKPiArIwl3YXJuaW5nICJEdW1teSBjb25zb2xlIGlz IGRpc2FibGVkLCBidXQgcmVxdWlyZWQgdG8ga2ljayBvdXQgVkdBQ09OIgo+ICsJcmV0dXJuIC1F Tk9ERVY7Cj4gKyNlbHNlCj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwlEUk1fSU5GTygiUmVwbGFj aW5nIFZHQSBjb25zb2xlIGRyaXZlclxuIik7Cj4gKwo+ICsJY29uc29sZV9sb2NrKCk7Cj4gKwlp ZiAoY29uX2lzX2JvdW5kKCZ2Z2FfY29uKSkKPiArCQlyZXQgPSBkb190YWtlX292ZXJfY29uc29s ZSgmZHVtbXlfY29uLCAwLAo+ICsJCQkJCSAgIE1BWF9OUl9DT05TT0xFUyAtIDEsIDEpOwo+ICsJ aWYgKHJldCA9PSAwKSB7Cj4gKwkJcmV0ID0gZG9fdW5yZWdpc3Rlcl9jb25fZHJpdmVyKCZ2Z2Ff Y29uKTsKPiArCQlpZiAocmV0ID09IC1FTk9ERVYpIC8qIGlnbm9yZSAiYWxyZWFkeSB1bnJlZ2lz dGVyZWQiICovCj4gKwkJCXJldCA9IDA7Cj4gKwl9Cj4gKwljb25zb2xlX3VubG9jaygpOwo+ICsK PiArCXJldHVybiByZXQ7Cj4gKyNlbmRpZgo+ICt9Cj4gKwo+ICsvKioKPiArICogZHJtX2V2aWN0 X2Zpcm13YXJlIC0gcmVtb3ZlIGFueSBjb25mbGljdGluZyBmaXJtd2FyZS1mcmFtZWJ1ZmZlcnMK PiArICogQGFwOgkJCWFwZXJ0dXJlcyBjbGFpbWVkIGJ5IGRyaXZlciwgb3IgTlVMTAo+ICsgKiBA ZmxhZ3M6CQlldmljdGlvbiBmbGFncwo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGV2aWN0cyBh bnkgY29uZmxpY3RpbmcgZmlybXdhcmUtZnJhbWVidWZmZXJzIGFuZCB0aGVpciBib3VuZAo+ICsg KiBkcml2ZXJzLCBhY2NvcmRpbmcgdG8gdGhlIGRhdGEgZ2l2ZW4gYXMgQGFwIGFuZCBAZmxhZ3Mu Cj4gKyAqCj4gKyAqIERlcGVuZGluZyBvbiBAZmxhZ3MsIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9u cyBhcmUgcGVyZm9ybWVkOgo+ICsgKgo+ICsgKiAgIERSTV9FVklDVF9GQkRFVjogQW55IGZiZGV2 IGRyaXZlcnMgdGhhdCBvdmVybGFwIEBhcCBhcmUgdW5sb2FkZWQuCj4gKyAqICAgICAgICAgICAg ICAgICAgICBGdXJ0aGVybW9yZSwgaWYgRFJNX0VWSUNUX1ZCRSBpcyBnaXZlbiBhcyB3ZWxsLCBh bnkgZmJkZXYKPiArICogICAgICAgICAgICAgICAgICAgIGRyaXZlciB0aGF0IG1hcHMgdGhlIFZH QSByZWdpb24gaXMgdW5sb2FkZWQuCj4gKyAqCj4gKyAqICAgRFJNX0VWSUNUX1BMQVRGT1JNOiBG aXJtd2FyZSBmcmFtZWJ1ZmZlciBwbGF0Zm9ybSBkZXZpY2VzIChlZy4sCj4gKyAqICAgICAgICAg ICAgICAgICAgICAgICAnc2ltcGxlLWZyYW1lYnVmZmVyJykgdGhhdCBvdmVybGFwIEBhcCBhcmUg cmVtb3ZlZAo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3lzdGVtLCBjYXVz aW5nIGRyaXZlcnMgdG8gYmUgdW5ib3VuZC4KPiArICogICAgICAgICAgICAgICAgICAgICAgIElm IERSTV9FVklDVF9WQkUgaXMgZ2l2ZW4sIHRoaXMgYWxzbyBhZmZlY3RzIGRldmljZXMKPiArICog ICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbWFwIHRoZSBWR0EgcmVnaW9uLgo+ICsgKgo+ICsg KiAgIERSTV9FVklDVF9WR0FDT046IFRoZSB2Z2Fjb24gY29uc29sZSBkcml2ZXIgaXMgdW5ib3Vu ZCBhbmQgdW5yZWdpc3RlcmVkLgo+ICsgKgo+ICsgKiBUaGUgY2FsbGVyIG11c3QgcHJvdmlkZSB0 aGVpciBhcGVydHVyZXMgYXMgQGFwLiBJZiBpdCBpcyBOVUxMLCBhbiBlbXB0eSBzZXQKPiArICog aXMgYXNzdW1lZCwgZXhjZXB0IGlmIERSTV9FVklDVF9BTllXSEVSRSBpcyBnaXZlbiwgaW4gd2hp Y2ggY2FzZSBhIGZha2UKPiArICogYXBlcnR1cmUgYWNyb3NzIHRoZSBlbnRpcmUgYWRkcmVzcyBy YW5nZSBpcyB1c2VkLgo+ICsgKgo+ICsgKiBSRVRVUk5TOgo+ICsgKiAwIG9uIHN1Y2Nlc3MsIG5l Z2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArICovCj4gK2ludCBkcm1fZXZpY3RfZmly bXdhcmUoc3RydWN0IGFwZXJ0dXJlc19zdHJ1Y3QgKmFwLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4g K3sKPiArCXN0cnVjdCBkcm1fZXZpY3RfY3R4IGN0eDsKPiArCXN0cnVjdCBhcGVydHVyZXNfc3Ry dWN0ICphbGxvY2F0ZWRfYXAgPSBOVUxMOwo+ICsJaW50IHJldDsKPiArCj4gKwlXQVJOX09OKGFw ICYmIChmbGFncyAmIERSTV9FVklDVF9BTllXSEVSRSkpOwo+ICsKPiArCWlmICghYXApIHsKPiAr CQlhbGxvY2F0ZWRfYXAgPSBhbGxvY19hcGVydHVyZXMoISEoZmxhZ3MgJiBEUk1fRVZJQ1RfQU5Z V0hFUkUpKTsKPiArCQlpZiAoIWFsbG9jYXRlZF9hcCkKPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4g Kwo+ICsJCWFwID0gYWxsb2NhdGVkX2FwOwo+ICsKPiArCQlpZiAoZmxhZ3MgJiBEUk1fRVZJQ1Rf QU5ZV0hFUkUpIHsKPiArCQkJYXAtPnJhbmdlc1swXS5iYXNlID0gMDsKPiArCQkJYXAtPnJhbmdl c1swXS5zaXplID0gfjA7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWN0eC5hcCA9IGFwOwo+ICsJY3R4 LmZsYWdzID0gZmxhZ3M7Cj4gKwo+ICsJaWYgKGZsYWdzICYgRFJNX0VWSUNUX1BMQVRGT1JNKSB7 Cj4gKwkJcmV0ID0gZHJtX2V2aWN0X3BsYXRmb3JtKCZjdHgpOwo+ICsJCWlmIChyZXQgPCAwKQo+ ICsJCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWlmIChmbGFncyAmIERSTV9FVklDVF9GQkRF Vikgewo+ICsJCXJldCA9IGRybV9ldmljdF9mYmRldigmY3R4KTsKPiArCQlpZiAocmV0IDwgMCkK PiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlpZiAoZmxhZ3MgJiBEUk1fRVZJQ1RfVkdB Q09OKSB7Cj4gKwkJcmV0ID0gZHJtX2V2aWN0X3ZnYWNvbigpOwo+ICsJCWlmIChyZXQgPCAwKQo+ ICsJCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWtmcmVlKGFsbG9jYXRlZF9hcCk7Cj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiAgLyoKPiAgICogRFJNIENvcmUKPiAgICogVGhlIERSTSBjb3Jl IG1vZHVsZSBpbml0aWFsaXplcyBhbGwgZ2xvYmFsIERSTSBvYmplY3RzIGFuZCBtYWtlcyB0aGVt Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybVAuaCBiL2luY2x1ZGUvZHJtL2RybVAuaAo+ IGluZGV4IDIxOTdhYjEuLjZjOGJjZjUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtUC5o Cj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCj4gQEAgLTg4LDYgKzg4LDcgQEAgc3RydWN0IGRy bV9nZW1fb2JqZWN0Owo+ICBzdHJ1Y3QgZHJtX21hc3RlcjsKPiAgc3RydWN0IGRybV92Ymxhbmtf Y3J0YzsKPgo+ICtzdHJ1Y3QgYXBlcnR1cmVzX3N0cnVjdDsKPiAgc3RydWN0IGRldmljZV9ub2Rl Owo+ICBzdHJ1Y3QgdmlkZW9tb2RlOwo+ICBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0Owo+IEBA IC05NzEsNiArOTcyLDE4IEBAIHZvaWQgZHJtX2Rldl91bnJlZihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKPiAgaW50IGRybV9kZXZfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQgbG9uZyBmbGFncyk7Cj4gIHZvaWQgZHJtX2Rldl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwo+Cj4gK2VudW0gewo+ICsJRFJNX0VWSUNUX0ZCREVWCQkJCT0gKDFVIDw8 ICAwKSwKPiArCURSTV9FVklDVF9QTEFURk9STQkJCT0gKDFVIDw8ICAxKSwKPiArCURSTV9FVklD VF9WR0FDT04JCQk9ICgxVSA8PCAgMiksCj4gKwlEUk1fRVZJQ1RfVkJFCQkJCT0gKDFVIDw8ICAz KSwKPiArCURSTV9FVklDVF9BTllXSEVSRQkJCT0gKDFVIDw8ICA0KSwKPiArCj4gKwlEUk1fRVZJ Q1RfREVGQVVMVCA9IERSTV9FVklDVF9GQkRFViwKPiArfTsKPiArCj4gK2ludCBkcm1fZXZpY3Rf ZmlybXdhcmUoc3RydWN0IGFwZXJ0dXJlc19zdHJ1Y3QgKmFwLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp Owo+ICsKPiAgc3RydWN0IGRybV9taW5vciAqZHJtX21pbm9yX2FjcXVpcmUodW5zaWduZWQgaW50 IG1pbm9yX2lkKTsKPiAgdm9pZCBkcm1fbWlub3JfcmVsZWFzZShzdHJ1Y3QgZHJtX21pbm9yICpt aW5vcik7Cj4KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK