From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: [PATCH 3/5] drm/ttm: move ttm_tt defines into ttm_tt.h Date: Tue, 6 Mar 2018 11:00:32 +0100 Message-ID: <649bcc4c-3ab5-de1b-ed3e-d05fdf7c83a6@shipmail.org> References: <20180227115000.4105-1-christian.koenig@amd.com> <20180227115000.4105-3-christian.koenig@amd.com> <7bba488d-3b91-3b26-001c-2d7e02331edf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <7bba488d-3b91-3b26-001c-2d7e02331edf@gmail.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?Q?Christian_K=c3=b6nig?= , dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, "Daenzer, Michel" List-Id: dri-devel@lists.freedesktop.org QWNrZWQtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4KCk9uIDAz LzA2LzIwMTggMTA6MTMgQU0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4gSGkgTWljaGVsICYg VGhvbWFzLAo+Cj4gYW55IG1vcmUgY29tbWVudHMgb24gdGhpcz8gT3IgY2FuIEkgY29tbWl0IGl0 Pwo+Cj4gVGhhbmtzLAo+IENocmlzdGlhbi4KPgo+IEFtIDI3LjAyLjIwMTggdW0gMTI6NDkgc2No cmllYiBDaHJpc3RpYW4gS8O2bmlnOgo+PiBMZXQncyBzdG9wIG1hbmdsaW5nIGV2ZXJ5dGhpbmcg aW4gYSBzaW5nbGUgaGVhZGVyIGFuZCBjcmVhdGUgb25lIGhlYWRlcgo+PiBwZXIgb2JqZWN0IGlu c3RlYWQuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5r b2VuaWdAYW1kLmNvbT4KPj4gLS0tCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3R0LmPC oMKgwqAgfMKgwqAgNiAtCj4+IMKgIGluY2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVyLmggfCAy MzcgCj4+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gwqAgaW5jbHVkZS9k cm0vdHRtL3R0bV90dC5owqDCoMKgwqDCoMKgwqAgfCAyNzIgCj4+ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPj4gwqAgMyBmaWxlcyBjaGFuZ2VkLCAyNzMgaW5zZXJ0 aW9ucygrKSwgMjQyIGRlbGV0aW9ucygtKQo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVk ZS9kcm0vdHRtL3R0bV90dC5oCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRt L3R0bV90dC5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fdHQuYwo+PiBpbmRleCAwZWUzYjhm MTE2MDUuLjhlMGI1MjVjZGEwMCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R0bS90 dG1fdHQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV90dC5jCj4+IEBAIC0zMSwx NyArMzEsMTEgQEAKPj4gwqAgI2RlZmluZSBwcl9mbXQoZm10KSAiW1RUTV0gIiBmbXQKPj4gwqAg wqAgI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+Cj4+IC0jaW5jbHVkZSA8bGludXgvaGlnaG1lbS5o Pgo+PiDCoCAjaW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgo+PiDCoCAjaW5jbHVkZSA8bGludXgv c2htZW1fZnMuaD4KPj4gwqAgI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4KPj4gLSNpbmNsdWRlIDxs aW51eC9zd2FwLmg+Cj4+IC0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+PiAtI2luY2x1ZGUgPGxp bnV4L2V4cG9ydC5oPgo+PiDCoCAjaW5jbHVkZSA8ZHJtL2RybV9jYWNoZS5oPgo+PiAtI2luY2x1 ZGUgPGRybS90dG0vdHRtX21vZHVsZS5oPgo+PiDCoCAjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9f ZHJpdmVyLmg+Cj4+IC0jaW5jbHVkZSA8ZHJtL3R0bS90dG1fcGxhY2VtZW50Lmg+Cj4+IMKgICNp bmNsdWRlIDxkcm0vdHRtL3R0bV9wYWdlX2FsbG9jLmg+Cj4+IMKgICNpZmRlZiBDT05GSUdfWDg2 Cj4+IMKgICNpbmNsdWRlIDxhc20vc2V0X21lbW9yeS5oPgo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vdHRtL3R0bV9ib19kcml2ZXIuaCAKPj4gYi9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2Ry aXZlci5oCj4+IGluZGV4IDQzMTJiNTMyNmYwYi4uZjhlMjUxNWI0MDFmIDEwMDY0NAo+PiAtLS0g YS9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oCj4+ICsrKyBiL2luY2x1ZGUvZHJtL3R0 bS90dG1fYm9fZHJpdmVyLmgKPj4gQEAgLTQyLDExMSArNDIsMTAgQEAKPj4gwqAgI2luY2x1ZGUg InR0bV9tZW1vcnkuaCIKPj4gwqAgI2luY2x1ZGUgInR0bV9tb2R1bGUuaCIKPj4gwqAgI2luY2x1 ZGUgInR0bV9wbGFjZW1lbnQuaCIKPj4gKyNpbmNsdWRlICJ0dG1fdHQuaCIKPj4gwqAgwqAgI2Rl ZmluZSBUVE1fTUFYX0JPX1BSSU9SSVRZwqDCoMKgIDRVCj4+IMKgIC1zdHJ1Y3QgdHRtX2JhY2tl bmRfZnVuYyB7Cj4+IC3CoMKgwqAgLyoqCj4+IC3CoMKgwqDCoCAqIHN0cnVjdCB0dG1fYmFja2Vu ZF9mdW5jIG1lbWJlciBiaW5kCj4+IC3CoMKgwqDCoCAqCj4+IC3CoMKgwqDCoCAqIEB0dG06IFBv aW50ZXIgdG8gYSBzdHJ1Y3QgdHRtX3R0Lgo+PiAtwqDCoMKgwqAgKiBAYm9fbWVtOiBQb2ludGVy IHRvIGEgc3RydWN0IHR0bV9tZW1fcmVnIGRlc2NyaWJpbmcgdGhlCj4+IC3CoMKgwqDCoCAqIG1l bW9yeSB0eXBlIGFuZCBsb2NhdGlvbiBmb3IgYmluZGluZy4KPj4gLcKgwqDCoMKgICoKPj4gLcKg wqDCoMKgICogQmluZCB0aGUgYmFja2VuZCBwYWdlcyBpbnRvIHRoZSBhcGVydHVyZSBpbiB0aGUg bG9jYXRpb24KPj4gLcKgwqDCoMKgICogaW5kaWNhdGVkIGJ5IEBib19tZW0uIFRoaXMgZnVuY3Rp b24gc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlCj4+IC3CoMKgwqDCoCAqIGRpZmZlcmVuY2VzIGJl dHdlZW4gYXBlcnR1cmUgYW5kIHN5c3RlbSBwYWdlIHNpemVzLgo+PiAtwqDCoMKgwqAgKi8KPj4g LcKgwqDCoCBpbnQgKCpiaW5kKSAoc3RydWN0IHR0bV90dCAqdHRtLCBzdHJ1Y3QgdHRtX21lbV9y ZWcgKmJvX21lbSk7Cj4+IC0KPj4gLcKgwqDCoCAvKioKPj4gLcKgwqDCoMKgICogc3RydWN0IHR0 bV9iYWNrZW5kX2Z1bmMgbWVtYmVyIHVuYmluZAo+PiAtwqDCoMKgwqAgKgo+PiAtwqDCoMKgwqAg KiBAdHRtOiBQb2ludGVyIHRvIGEgc3RydWN0IHR0bV90dC4KPj4gLcKgwqDCoMKgICoKPj4gLcKg wqDCoMKgICogVW5iaW5kIHByZXZpb3VzbHkgYm91bmQgYmFja2VuZCBwYWdlcy4gVGhpcyBmdW5j dGlvbiBzaG91bGQgYmUKPj4gLcKgwqDCoMKgICogYWJsZSB0byBoYW5kbGUgZGlmZmVyZW5jZXMg YmV0d2VlbiBhcGVydHVyZSBhbmQgc3lzdGVtIHBhZ2UgCj4+IHNpemVzLgo+PiAtwqDCoMKgwqAg Ki8KPj4gLcKgwqDCoCBpbnQgKCp1bmJpbmQpIChzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiAtCj4+ IC3CoMKgwqAgLyoqCj4+IC3CoMKgwqDCoCAqIHN0cnVjdCB0dG1fYmFja2VuZF9mdW5jIG1lbWJl ciBkZXN0cm95Cj4+IC3CoMKgwqDCoCAqCj4+IC3CoMKgwqDCoCAqIEB0dG06IFBvaW50ZXIgdG8g YSBzdHJ1Y3QgdHRtX3R0Lgo+PiAtwqDCoMKgwqAgKgo+PiAtwqDCoMKgwqAgKiBEZXN0cm95IHRo ZSBiYWNrZW5kLiBUaGlzIHdpbGwgYmUgY2FsbCBiYWNrIGZyb20gCj4+IHR0bV90dF9kZXN0cm95 IHNvCj4+IC3CoMKgwqDCoCAqIGRvbid0IGNhbGwgdHRtX3R0X2Rlc3Ryb3kgZnJvbSB0aGUgY2Fs bGJhY2sgb3IgaW5maW5pdGUgbG9vcC4KPj4gLcKgwqDCoMKgICovCj4+IC3CoMKgwqAgdm9pZCAo KmRlc3Ryb3kpIChzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiAtfTsKPj4gLQo+PiAtI2RlZmluZSBU VE1fUEFHRV9GTEFHX1dSSVRFwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgMykKPj4gLSNkZWZp bmUgVFRNX1BBR0VfRkxBR19TV0FQUEVEwqDCoMKgwqDCoMKgwqDCoCAoMSA8PCA0KQo+PiAtI2Rl ZmluZSBUVE1fUEFHRV9GTEFHX1BFUlNJU1RFTlRfU1dBUCAoMSA8PCA1KQo+PiAtI2RlZmluZSBU VE1fUEFHRV9GTEFHX1pFUk9fQUxMT0PCoMKgwqDCoMKgICgxIDw8IDYpCj4+IC0jZGVmaW5lIFRU TV9QQUdFX0ZMQUdfRE1BMzLCoMKgwqDCoMKgwqDCoMKgwqDCoCAoMSA8PCA3KQo+PiAtI2RlZmlu ZSBUVE1fUEFHRV9GTEFHX1NHwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgOCkKPj4g LSNkZWZpbmUgVFRNX1BBR0VfRkxBR19OT19SRVRSWcKgwqDCoMKgwqDCoMKgwqDCoCAoMSA8PCA5 KQo+PiAtCj4+IC1lbnVtIHR0bV9jYWNoaW5nX3N0YXRlIHsKPj4gLcKgwqDCoCB0dF91bmNhY2hl ZCwKPj4gLcKgwqDCoCB0dF93YywKPj4gLcKgwqDCoCB0dF9jYWNoZWQKPj4gLX07Cj4+IC0KPj4g LS8qKgo+PiAtICogc3RydWN0IHR0bV90dAo+PiAtICoKPj4gLSAqIEBiZGV2OiBQb2ludGVyIHRv IGEgc3RydWN0IHR0bV9ib19kZXZpY2UuCj4+IC0gKiBAZnVuYzogUG9pbnRlciB0byBhIHN0cnVj dCB0dG1fYmFja2VuZF9mdW5jIHRoYXQgZGVzY3JpYmVzCj4+IC0gKiB0aGUgYmFja2VuZCBtZXRo b2RzLgo+PiAtICogcG9pbnRlci4KPj4gLSAqIEBwYWdlczogQXJyYXkgb2YgcGFnZXMgYmFja2lu ZyB0aGUgZGF0YS4KPj4gLSAqIEBudW1fcGFnZXM6IE51bWJlciBvZiBwYWdlcyBpbiB0aGUgcGFn ZSBhcnJheS4KPj4gLSAqIEBiZGV2OiBQb2ludGVyIHRvIHRoZSBjdXJyZW50IHN0cnVjdCB0dG1f Ym9fZGV2aWNlLgo+PiAtICogQGJlOiBQb2ludGVyIHRvIHRoZSB0dG0gYmFja2VuZC4KPj4gLSAq IEBzd2FwX3N0b3JhZ2U6IFBvaW50ZXIgdG8gc2htZW0gc3RydWN0IGZpbGUgZm9yIHN3YXAgc3Rv cmFnZS4KPj4gLSAqIEBjYWNoaW5nX3N0YXRlOiBUaGUgY3VycmVudCBjYWNoaW5nIHN0YXRlIG9m IHRoZSBwYWdlcy4KPj4gLSAqIEBzdGF0ZTogVGhlIGN1cnJlbnQgYmluZGluZyBzdGF0ZSBvZiB0 aGUgcGFnZXMuCj4+IC0gKgo+PiAtICogVGhpcyBpcyBhIHN0cnVjdHVyZSBob2xkaW5nIHRoZSBw YWdlcywgY2FjaGluZy0gYW5kIGFwZXJ0dXJlIGJpbmRpbmcKPj4gLSAqIHN0YXR1cyBmb3IgYSBi dWZmZXIgb2JqZWN0IHRoYXQgaXNuJ3QgYmFja2VkIGJ5IGZpeGVkIChWUkFNIC8gQUdQKQo+PiAt ICogbWVtb3J5Lgo+PiAtICovCj4+IC0KPj4gLXN0cnVjdCB0dG1fdHQgewo+PiAtwqDCoMKgIHN0 cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2Owo+PiAtwqDCoMKgIHN0cnVjdCB0dG1fYmFja2VuZF9m dW5jICpmdW5jOwo+PiAtwqDCoMKgIHN0cnVjdCBwYWdlICoqcGFnZXM7Cj4+IC3CoMKgwqAgdWlu dDMyX3QgcGFnZV9mbGFnczsKPj4gLcKgwqDCoCB1bnNpZ25lZCBsb25nIG51bV9wYWdlczsKPj4g LcKgwqDCoCBzdHJ1Y3Qgc2dfdGFibGUgKnNnOyAvKiBmb3IgU0cgb2JqZWN0cyB2aWEgZG1hLWJ1 ZiAqLwo+PiAtwqDCoMKgIHN0cnVjdCBmaWxlICpzd2FwX3N0b3JhZ2U7Cj4+IC3CoMKgwqAgZW51 bSB0dG1fY2FjaGluZ19zdGF0ZSBjYWNoaW5nX3N0YXRlOwo+PiAtwqDCoMKgIGVudW0gewo+PiAt wqDCoMKgwqDCoMKgwqAgdHRfYm91bmQsCj4+IC3CoMKgwqDCoMKgwqDCoCB0dF91bmJvdW5kLAo+ PiAtwqDCoMKgwqDCoMKgwqAgdHRfdW5wb3B1bGF0ZWQsCj4+IC3CoMKgwqAgfSBzdGF0ZTsKPj4g LX07Cj4+IC0KPj4gLS8qKgo+PiAtICogc3RydWN0IHR0bV9kbWFfdHQKPj4gLSAqCj4+IC0gKiBA dHRtOiBCYXNlIHR0bV90dCBzdHJ1Y3QuCj4+IC0gKiBAZG1hX2FkZHJlc3M6IFRoZSBETUEgKGJ1 cykgYWRkcmVzc2VzIG9mIHRoZSBwYWdlcwo+PiAtICogQHBhZ2VzX2xpc3Q6IHVzZWQgYnkgc29t ZSBwYWdlIGFsbG9jYXRpb24gYmFja2VuZAo+PiAtICoKPj4gLSAqIFRoaXMgaXMgYSBzdHJ1Y3R1 cmUgaG9sZGluZyB0aGUgcGFnZXMsIGNhY2hpbmctIGFuZCBhcGVydHVyZSBiaW5kaW5nCj4+IC0g KiBzdGF0dXMgZm9yIGEgYnVmZmVyIG9iamVjdCB0aGF0IGlzbid0IGJhY2tlZCBieSBmaXhlZCAo VlJBTSAvIEFHUCkKPj4gLSAqIG1lbW9yeS4KPj4gLSAqLwo+PiAtc3RydWN0IHR0bV9kbWFfdHQg ewo+PiAtwqDCoMKgIHN0cnVjdCB0dG1fdHQgdHRtOwo+PiAtwqDCoMKgIGRtYV9hZGRyX3QgKmRt YV9hZGRyZXNzOwo+PiAtwqDCoMKgIHN0cnVjdCBsaXN0X2hlYWQgcGFnZXNfbGlzdDsKPj4gLX07 Cj4+IC0KPj4gwqAgI2RlZmluZSBUVE1fTUVNVFlQRV9GTEFHX0ZJWEVEwqDCoMKgwqDCoMKgwqDC oCAoMSA8PCAwKcKgwqDCoCAvKiBGaXhlZCAKPj4gKG9uLWNhcmQpIFBDSSBtZW1vcnkgKi8KPj4g wqAgI2RlZmluZSBUVE1fTUVNVFlQRV9GTEFHX01BUFBBQkxFwqDCoMKgwqDCoCAoMSA8PCAxKcKg wqDCoCAvKiBNZW1vcnkgCj4+IG1hcHBhYmxlICovCj4+IMKgICNkZWZpbmUgVFRNX01FTVRZUEVf RkxBR19DTUHCoMKgwqDCoMKgwqDCoMKgwqDCoCAoMSA8PCAzKcKgwqDCoCAvKiBDYW4ndCBtYXAg Cj4+IGFwZXJ0dXJlICovCj4+IEBAIC02MTAsMTE3ICs1MDksNiBAQCB0dG1fZmxhZ19tYXNrZWQo dWludDMyX3QgKm9sZCwgdWludDMyX3QgbmV3LCAKPj4gdWludDMyX3QgbWFzaykKPj4gwqDCoMKg wqDCoCByZXR1cm4gKm9sZDsKPj4gwqAgfQo+PiDCoCAtLyoqCj4+IC0gKiB0dG1fdHRfY3JlYXRl Cj4+IC0gKgo+PiAtICogQGJvOiBwb2ludGVyIHRvIGEgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0 Cj4+IC0gKiBAemVyb19hbGxvYzogdHJ1ZSBpZiBhbGxvY2F0ZWQgcGFnZXMgbmVlZHMgdG8gYmUg emVyb2VkCj4+IC0gKgo+PiAtICogTWFrZSBzdXJlIHdlIGhhdmUgYSBUVE0gc3RydWN0dXJlIGFs bG9jYXRlZCBmb3IgdGhlIGdpdmVuIEJPLgo+PiAtICogTm8gcGFnZXMgYXJlIGFjdHVhbGx5IGFs bG9jYXRlZC4KPj4gLSAqLwo+PiAtaW50IHR0bV90dF9jcmVhdGUoc3RydWN0IHR0bV9idWZmZXJf b2JqZWN0ICpibywgYm9vbCB6ZXJvX2FsbG9jKTsKPj4gLQo+PiAtLyoqCj4+IC0gKiB0dG1fdHRf aW5pdAo+PiAtICoKPj4gLSAqIEB0dG06IFRoZSBzdHJ1Y3QgdHRtX3R0Lgo+PiAtICogQGJkZXY6 IHBvaW50ZXIgdG8gYSBzdHJ1Y3QgdHRtX2JvX2RldmljZToKPj4gLSAqIEBzaXplOiBTaXplIG9m IHRoZSBkYXRhIG5lZWRlZCBiYWNraW5nLgo+PiAtICogQHBhZ2VfZmxhZ3M6IFBhZ2UgZmxhZ3Mg YXMgaWRlbnRpZmllZCBieSBUVE1fUEFHRV9GTEFHX1hYIGZsYWdzLgo+PiAtICoKPj4gLSAqIENy ZWF0ZSBhIHN0cnVjdCB0dG1fdHQgdG8gYmFjayBkYXRhIHdpdGggc3lzdGVtIG1lbW9yeSBwYWdl cy4KPj4gLSAqIE5vIHBhZ2VzIGFyZSBhY3R1YWxseSBhbGxvY2F0ZWQuCj4+IC0gKiBSZXR1cm5z Ogo+PiAtICogTlVMTDogT3V0IG9mIG1lbW9yeS4KPj4gLSAqLwo+PiAtaW50IHR0bV90dF9pbml0 KHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCj4+IC3CoMKg wqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHNpemUsIHVpbnQzMl90IHBhZ2VfZmxhZ3MpOwo+PiAt aW50IHR0bV9kbWFfdHRfaW5pdChzdHJ1Y3QgdHRtX2RtYV90dCAqdHRtX2RtYSwgc3RydWN0IHR0 bV9ib19kZXZpY2UgCj4+ICpiZGV2LAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25l ZCBsb25nIHNpemUsIHVpbnQzMl90IHBhZ2VfZmxhZ3MpOwo+PiAtCj4+IC0vKioKPj4gLSAqIHR0 bV90dF9maW5pCj4+IC0gKgo+PiAtICogQHR0bTogdGhlIHR0bV90dCBzdHJ1Y3R1cmUuCj4+IC0g Kgo+PiAtICogRnJlZSBtZW1vcnkgb2YgdHRtX3R0IHN0cnVjdHVyZQo+PiAtICovCj4+IC12b2lk IHR0bV90dF9maW5pKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4+IC12b2lkIHR0bV9kbWFfdHRfZmlu aShzdHJ1Y3QgdHRtX2RtYV90dCAqdHRtX2RtYSk7Cj4+IC0KPj4gLS8qKgo+PiAtICogdHRtX3R0 bV9iaW5kOgo+PiAtICoKPj4gLSAqIEB0dG06IFRoZSBzdHJ1Y3QgdHRtX3R0IGNvbnRhaW5pbmcg YmFja2luZyBwYWdlcy4KPj4gLSAqIEBib19tZW06IFRoZSBzdHJ1Y3QgdHRtX21lbV9yZWcgaWRl bnRpZnlpbmcgdGhlIGJpbmRpbmcgbG9jYXRpb24uCj4+IC0gKgo+PiAtICogQmluZCB0aGUgcGFn ZXMgb2YgQHR0bSB0byBhbiBhcGVydHVyZSBsb2NhdGlvbiBpZGVudGlmaWVkIGJ5IEBib19tZW0K Pj4gLSAqLwo+PiAtaW50IHR0bV90dF9iaW5kKHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IHR0 bV9tZW1fcmVnICpib19tZW0sCj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdHRtX29wZXJhdGlv bl9jdHggKmN0eCk7Cj4+IC0KPj4gLS8qKgo+PiAtICogdHRtX3R0bV9kZXN0cm95Ogo+PiAtICoK Pj4gLSAqIEB0dG06IFRoZSBzdHJ1Y3QgdHRtX3R0Lgo+PiAtICoKPj4gLSAqIFVuYmluZCwgdW5w b3B1bGF0ZSBhbmQgZGVzdHJveSBjb21tb24gc3RydWN0IHR0bV90dC4KPj4gLSAqLwo+PiAtdm9p ZCB0dG1fdHRfZGVzdHJveShzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiAtCj4+IC0vKioKPj4gLSAq IHR0bV90dG1fdW5iaW5kOgo+PiAtICoKPj4gLSAqIEB0dG06IFRoZSBzdHJ1Y3QgdHRtX3R0Lgo+ PiAtICoKPj4gLSAqIFVuYmluZCBhIHN0cnVjdCB0dG1fdHQuCj4+IC0gKi8KPj4gLXZvaWQgdHRt X3R0X3VuYmluZChzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiAtCj4+IC0vKioKPj4gLSAqIHR0bV90 dF9zd2FwaW46Cj4+IC0gKgo+PiAtICogQHR0bTogVGhlIHN0cnVjdCB0dG1fdHQuCj4+IC0gKgo+ PiAtICogU3dhcCBpbiBhIHByZXZpb3VzbHkgc3dhcCBvdXQgdHRtX3R0Lgo+PiAtICovCj4+IC1p bnQgdHRtX3R0X3N3YXBpbihzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiAtCj4+IC0vKioKPj4gLSAq IHR0bV90dF9zZXRfcGxhY2VtZW50X2NhY2hpbmc6Cj4+IC0gKgo+PiAtICogQHR0bSBBIHN0cnVj dCB0dG1fdHQgdGhlIGJhY2tpbmcgcGFnZXMgb2Ygd2hpY2ggd2lsbCBjaGFuZ2UgCj4+IGNhY2hp bmcgcG9saWN5Lgo+PiAtICogQHBsYWNlbWVudDogRmxhZyBpbmRpY2F0aW5nIHRoZSBkZXNpcmVk IGNhY2hpbmcgcG9saWN5Lgo+PiAtICoKPj4gLSAqIFRoaXMgZnVuY3Rpb24gd2lsbCBjaGFuZ2Ug Y2FjaGluZyBwb2xpY3kgb2YgYW55IGRlZmF1bHQga2VybmVsIAo+PiBtYXBwaW5ncyBvZgo+PiAt ICogdGhlIHBhZ2VzIGJhY2tpbmcgQHR0bS4gSWYgY2hhbmdpbmcgZnJvbSBjYWNoZWQgdG8gdW5j YWNoZWQgb3IKPj4gLSAqIHdyaXRlLWNvbWJpbmVkLAo+PiAtICogYWxsIENQVSBjYWNoZXMgd2ls bCBmaXJzdCBiZSBmbHVzaGVkIHRvIG1ha2Ugc3VyZSB0aGUgZGF0YSBvZiB0aGUgCj4+IHBhZ2Vz Cj4+IC0gKiBoaXQgUkFNLiBUaGlzIGZ1bmN0aW9uIG1heSBiZSB2ZXJ5IGNvc3RseSBhcyBpdCBp bnZvbHZlcyBnbG9iYWwgVExCCj4+IC0gKiBhbmQgY2FjaGUgZmx1c2hlcyBhbmQgcG90ZW50aWFs IHBhZ2Ugc3BsaXR0aW5nIC8gY29tYmluaW5nLgo+PiAtICovCj4+IC1pbnQgdHRtX3R0X3NldF9w bGFjZW1lbnRfY2FjaGluZyhzdHJ1Y3QgdHRtX3R0ICp0dG0sIHVpbnQzMl90IAo+PiBwbGFjZW1l bnQpOwo+PiAtaW50IHR0bV90dF9zd2Fwb3V0KHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IGZp bGUgCj4+ICpwZXJzaXN0ZW50X3N3YXBfc3RvcmFnZSk7Cj4+IC0KPj4gLS8qKgo+PiAtICogdHRt X3R0X3BvcHVsYXRlIC0gYWxsb2NhdGUgcGFnZXMgZm9yIGEgdHRtCj4+IC0gKgo+PiAtICogQHR0 bTogUG9pbnRlciB0byB0aGUgdHRtX3R0IHN0cnVjdHVyZQo+PiAtICoKPj4gLSAqIENhbGxzIHRo ZSBkcml2ZXIgbWV0aG9kIHRvIGFsbG9jYXRlIHBhZ2VzIGZvciBhIHR0bQo+PiAtICovCj4+IC1p bnQgdHRtX3R0X3BvcHVsYXRlKHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IHR0bV9vcGVyYXRp b25fY3R4ICpjdHgpOwo+PiAtCj4+IC0vKioKPj4gLSAqIHR0bV90dF91bnBvcHVsYXRlIC0gZnJl ZSBwYWdlcyBmcm9tIGEgdHRtCj4+IC0gKgo+PiAtICogQHR0bTogUG9pbnRlciB0byB0aGUgdHRt X3R0IHN0cnVjdHVyZQo+PiAtICoKPj4gLSAqIENhbGxzIHRoZSBkcml2ZXIgbWV0aG9kIHRvIGZy ZWUgYWxsIHBhZ2VzIGZyb20gYSB0dG0KPj4gLSAqLwo+PiAtdm9pZCB0dG1fdHRfdW5wb3B1bGF0 ZShzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiAtCj4+IMKgIC8qCj4+IMKgwqAgKiB0dG1fYm8uYwo+ PiDCoMKgICovCj4+IEBAIC0xMDc0LDI3ICs4NjIsNCBAQCBwZ3Byb3RfdCB0dG1faW9fcHJvdCh1 aW50MzJfdCBjYWNoaW5nX2ZsYWdzLCAKPj4gcGdwcm90X3QgdG1wKTsKPj4gwqAgwqAgZXh0ZXJu IGNvbnN0IHN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlcl9mdW5jIHR0bV9ib19tYW5hZ2VyX2Z1 bmM7Cj4+IMKgIC0jaWYgSVNfRU5BQkxFRChDT05GSUdfQUdQKQo+PiAtI2luY2x1ZGUgPGxpbnV4 L2FncF9iYWNrZW5kLmg+Cj4+IC0KPj4gLS8qKgo+PiAtICogdHRtX2FncF90dF9jcmVhdGUKPj4g LSAqCj4+IC0gKiBAYmRldjogUG9pbnRlciB0byBhIHN0cnVjdCB0dG1fYm9fZGV2aWNlLgo+PiAt ICogQGJyaWRnZTogVGhlIGFncCBicmlkZ2UgdGhpcyBkZXZpY2UgaXMgc2l0dGluZyBvbi4KPj4g LSAqIEBzaXplOiBTaXplIG9mIHRoZSBkYXRhIG5lZWRlZCBiYWNraW5nLgo+PiAtICogQHBhZ2Vf ZmxhZ3M6IFBhZ2UgZmxhZ3MgYXMgaWRlbnRpZmllZCBieSBUVE1fUEFHRV9GTEFHX1hYIGZsYWdz Lgo+PiAtICoKPj4gLSAqCj4+IC0gKiBDcmVhdGUgYSBUVE0gYmFja2VuZCB0aGF0IHVzZXMgdGhl IGluZGljYXRlZCBBR1AgYnJpZGdlIGFzIGFuIAo+PiBhcGVydHVyZQo+PiAtICogZm9yIFRUIG1l bW9yeS4gVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBsaW51eCBhZ3BnYXJ0IGludGVyZmFjZSB0bwo+ PiAtICogYmluZCBhbmQgdW5iaW5kIG1lbW9yeSBiYWNraW5nIGEgdHRtX3R0Lgo+PiAtICovCj4+ IC1zdHJ1Y3QgdHRtX3R0ICp0dG1fYWdwX3R0X2NyZWF0ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAq YmRldiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhZ3BfYnJp ZGdlX2RhdGEgKmJyaWRnZSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVu c2lnbmVkIGxvbmcgc2l6ZSwgdWludDMyX3QgcGFnZV9mbGFncyk7Cj4+IC1pbnQgdHRtX2FncF90 dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAK Pj4gKmN0eCk7Cj4+IC12b2lkIHR0bV9hZ3BfdHRfdW5wb3B1bGF0ZShzdHJ1Y3QgdHRtX3R0ICp0 dG0pOwo+PiAtI2VuZGlmCj4+IC0KPj4gwqAgI2VuZGlmCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRl L2RybS90dG0vdHRtX3R0LmggYi9pbmNsdWRlL2RybS90dG0vdHRtX3R0LmgKPj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi45Yzc4NTU2YjQ4OGUKPj4gLS0tIC9k ZXYvbnVsbAo+PiArKysgYi9pbmNsdWRlL2RybS90dG0vdHRtX3R0LmgKPj4gQEAgLTAsMCArMSwy NzIgQEAKPj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiAKPj4KPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQg KGMpIDIwMDYtMjAwOSBWbXdhcmUsIEluYy4sIFBhbG8gQWx0bywgQ0EuLCBVU0EKPj4gKyAqIEFs bCBSaWdodHMgUmVzZXJ2ZWQuCj4+ICsgKgo+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gCj4+IG9idGFpbmluZyBhCj4+ICsg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlCj4+ICsgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCj4+ICsgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCj4+ICsgKiBkaXN0cmli dXRlLCBzdWIgbGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvCj4+ICsgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNo ZWQgdG8gZG8gc28sIAo+PiBzdWJqZWN0IHRvCj4+ICsgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6Cj4+ICsgKgo+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKPj4gKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIAo+PiBwb3J0aW9ucwo+ PiArICogb2YgdGhlIFNvZnR3YXJlLgo+PiArICoKPj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCAKPj4gRVhQUkVTUyBP Ugo+PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiAKPj4gTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIAo+PiBFVkVOVCBTSEFMTAo+ PiArICogVEhFIENPUFlSSUdIVCBIT0xERVJTLCBBVVRIT1JTIEFORC9PUiBJVFMgU1VQUExJRVJT IEJFIExJQUJMRSBGT1IgCj4+IEFOWSBDTEFJTSwKPj4gKyAqIERBTUFHRVMgT1IgT1RIRVIgTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgCj4+IFRPUlQgT1IKPj4g KyAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSAKPj4gU09GVFdBUkUgT1IgVEhFCj4+ICsgKiBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4g VEhFIFNPRlRXQVJFLgo+PiArICoKPj4gKyAKPj4gKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCj4+ICsjaWZu ZGVmIF9UVE1fVFRfSF8KPj4gKyNkZWZpbmUgX1RUTV9UVF9IXwo+PiArCj4+ICsjaW5jbHVkZSA8 bGludXgvdHlwZXMuaD4KPj4gKwo+PiArc3RydWN0IHR0bV90dDsKPj4gK3N0cnVjdCB0dG1fbWVt X3JlZzsKPj4gK3N0cnVjdCB0dG1fYnVmZmVyX29iamVjdDsKPj4gK3N0cnVjdCB0dG1fb3BlcmF0 aW9uX2N0eDsKPj4gKwo+PiArI2RlZmluZSBUVE1fUEFHRV9GTEFHX1dSSVRFwqDCoMKgwqDCoMKg wqDCoMKgwqAgKDEgPDwgMykKPj4gKyNkZWZpbmUgVFRNX1BBR0VfRkxBR19TV0FQUEVEwqDCoMKg wqDCoMKgwqDCoCAoMSA8PCA0KQo+PiArI2RlZmluZSBUVE1fUEFHRV9GTEFHX1BFUlNJU1RFTlRf U1dBUCAoMSA8PCA1KQo+PiArI2RlZmluZSBUVE1fUEFHRV9GTEFHX1pFUk9fQUxMT0PCoMKgwqDC oMKgICgxIDw8IDYpCj4+ICsjZGVmaW5lIFRUTV9QQUdFX0ZMQUdfRE1BMzLCoMKgwqDCoMKgwqDC oMKgwqDCoCAoMSA8PCA3KQo+PiArI2RlZmluZSBUVE1fUEFHRV9GTEFHX1NHwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKDEgPDwgOCkKPj4gKyNkZWZpbmUgVFRNX1BBR0VfRkxBR19OT19SRVRS WcKgwqDCoMKgwqDCoMKgwqDCoCAoMSA8PCA5KQo+PiArCj4+ICtlbnVtIHR0bV9jYWNoaW5nX3N0 YXRlIHsKPj4gK8KgwqDCoCB0dF91bmNhY2hlZCwKPj4gK8KgwqDCoCB0dF93YywKPj4gK8KgwqDC oCB0dF9jYWNoZWQKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCB0dG1fYmFja2VuZF9mdW5jIHsKPj4g K8KgwqDCoCAvKioKPj4gK8KgwqDCoMKgICogc3RydWN0IHR0bV9iYWNrZW5kX2Z1bmMgbWVtYmVy IGJpbmQKPj4gK8KgwqDCoMKgICoKPj4gK8KgwqDCoMKgICogQHR0bTogUG9pbnRlciB0byBhIHN0 cnVjdCB0dG1fdHQuCj4+ICvCoMKgwqDCoCAqIEBib19tZW06IFBvaW50ZXIgdG8gYSBzdHJ1Y3Qg dHRtX21lbV9yZWcgZGVzY3JpYmluZyB0aGUKPj4gK8KgwqDCoMKgICogbWVtb3J5IHR5cGUgYW5k IGxvY2F0aW9uIGZvciBiaW5kaW5nLgo+PiArwqDCoMKgwqAgKgo+PiArwqDCoMKgwqAgKiBCaW5k IHRoZSBiYWNrZW5kIHBhZ2VzIGludG8gdGhlIGFwZXJ0dXJlIGluIHRoZSBsb2NhdGlvbgo+PiAr wqDCoMKgwqAgKiBpbmRpY2F0ZWQgYnkgQGJvX21lbS4gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg YWJsZSB0byBoYW5kbGUKPj4gK8KgwqDCoMKgICogZGlmZmVyZW5jZXMgYmV0d2VlbiBhcGVydHVy ZSBhbmQgc3lzdGVtIHBhZ2Ugc2l6ZXMuCj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKgIGludCAo KmJpbmQpIChzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCB0dG1fbWVtX3JlZyAqYm9fbWVtKTsK Pj4gKwo+PiArwqDCoMKgIC8qKgo+PiArwqDCoMKgwqAgKiBzdHJ1Y3QgdHRtX2JhY2tlbmRfZnVu YyBtZW1iZXIgdW5iaW5kCj4+ICvCoMKgwqDCoCAqCj4+ICvCoMKgwqDCoCAqIEB0dG06IFBvaW50 ZXIgdG8gYSBzdHJ1Y3QgdHRtX3R0Lgo+PiArwqDCoMKgwqAgKgo+PiArwqDCoMKgwqAgKiBVbmJp bmQgcHJldmlvdXNseSBib3VuZCBiYWNrZW5kIHBhZ2VzLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBi ZQo+PiArwqDCoMKgwqAgKiBhYmxlIHRvIGhhbmRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGFwZXJ0 dXJlIGFuZCBzeXN0ZW0gcGFnZSAKPj4gc2l6ZXMuCj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKg IGludCAoKnVuYmluZCkgKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4+ICsKPj4gK8KgwqDCoCAvKioK Pj4gK8KgwqDCoMKgICogc3RydWN0IHR0bV9iYWNrZW5kX2Z1bmMgbWVtYmVyIGRlc3Ryb3kKPj4g K8KgwqDCoMKgICoKPj4gK8KgwqDCoMKgICogQHR0bTogUG9pbnRlciB0byBhIHN0cnVjdCB0dG1f dHQuCj4+ICvCoMKgwqDCoCAqCj4+ICvCoMKgwqDCoCAqIERlc3Ryb3kgdGhlIGJhY2tlbmQuIFRo aXMgd2lsbCBiZSBjYWxsIGJhY2sgZnJvbSAKPj4gdHRtX3R0X2Rlc3Ryb3kgc28KPj4gK8KgwqDC oMKgICogZG9uJ3QgY2FsbCB0dG1fdHRfZGVzdHJveSBmcm9tIHRoZSBjYWxsYmFjayBvciBpbmZp bml0ZSBsb29wLgo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCB2b2lkICgqZGVzdHJveSkgKHN0 cnVjdCB0dG1fdHQgKnR0bSk7Cj4+ICt9Owo+PiArCj4+ICsvKioKPj4gKyAqIHN0cnVjdCB0dG1f dHQKPj4gKyAqCj4+ICsgKiBAYmRldjogUG9pbnRlciB0byBhIHN0cnVjdCB0dG1fYm9fZGV2aWNl Lgo+PiArICogQGZ1bmM6IFBvaW50ZXIgdG8gYSBzdHJ1Y3QgdHRtX2JhY2tlbmRfZnVuYyB0aGF0 IGRlc2NyaWJlcwo+PiArICogdGhlIGJhY2tlbmQgbWV0aG9kcy4KPj4gKyAqIHBvaW50ZXIuCj4+ ICsgKiBAcGFnZXM6IEFycmF5IG9mIHBhZ2VzIGJhY2tpbmcgdGhlIGRhdGEuCj4+ICsgKiBAbnVt X3BhZ2VzOiBOdW1iZXIgb2YgcGFnZXMgaW4gdGhlIHBhZ2UgYXJyYXkuCj4+ICsgKiBAYmRldjog UG9pbnRlciB0byB0aGUgY3VycmVudCBzdHJ1Y3QgdHRtX2JvX2RldmljZS4KPj4gKyAqIEBiZTog UG9pbnRlciB0byB0aGUgdHRtIGJhY2tlbmQuCj4+ICsgKiBAc3dhcF9zdG9yYWdlOiBQb2ludGVy IHRvIHNobWVtIHN0cnVjdCBmaWxlIGZvciBzd2FwIHN0b3JhZ2UuCj4+ICsgKiBAY2FjaGluZ19z dGF0ZTogVGhlIGN1cnJlbnQgY2FjaGluZyBzdGF0ZSBvZiB0aGUgcGFnZXMuCj4+ICsgKiBAc3Rh dGU6IFRoZSBjdXJyZW50IGJpbmRpbmcgc3RhdGUgb2YgdGhlIHBhZ2VzLgo+PiArICoKPj4gKyAq IFRoaXMgaXMgYSBzdHJ1Y3R1cmUgaG9sZGluZyB0aGUgcGFnZXMsIGNhY2hpbmctIGFuZCBhcGVy dHVyZSBiaW5kaW5nCj4+ICsgKiBzdGF0dXMgZm9yIGEgYnVmZmVyIG9iamVjdCB0aGF0IGlzbid0 IGJhY2tlZCBieSBmaXhlZCAoVlJBTSAvIEFHUCkKPj4gKyAqIG1lbW9yeS4KPj4gKyAqLwo+PiAr c3RydWN0IHR0bV90dCB7Cj4+ICvCoMKgwqAgc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXY7Cj4+ ICvCoMKgwqAgc3RydWN0IHR0bV9iYWNrZW5kX2Z1bmMgKmZ1bmM7Cj4+ICvCoMKgwqAgc3RydWN0 IHBhZ2UgKipwYWdlczsKPj4gK8KgwqDCoCB1aW50MzJfdCBwYWdlX2ZsYWdzOwo+PiArwqDCoMKg IHVuc2lnbmVkIGxvbmcgbnVtX3BhZ2VzOwo+PiArwqDCoMKgIHN0cnVjdCBzZ190YWJsZSAqc2c7 IC8qIGZvciBTRyBvYmplY3RzIHZpYSBkbWEtYnVmICovCj4+ICvCoMKgwqAgc3RydWN0IGZpbGUg KnN3YXBfc3RvcmFnZTsKPj4gK8KgwqDCoCBlbnVtIHR0bV9jYWNoaW5nX3N0YXRlIGNhY2hpbmdf c3RhdGU7Cj4+ICvCoMKgwqAgZW51bSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0dF9ib3VuZCwKPj4g K8KgwqDCoMKgwqDCoMKgIHR0X3VuYm91bmQsCj4+ICvCoMKgwqDCoMKgwqDCoCB0dF91bnBvcHVs YXRlZCwKPj4gK8KgwqDCoCB9IHN0YXRlOwo+PiArfTsKPj4gKwo+PiArLyoqCj4+ICsgKiBzdHJ1 Y3QgdHRtX2RtYV90dAo+PiArICoKPj4gKyAqIEB0dG06IEJhc2UgdHRtX3R0IHN0cnVjdC4KPj4g KyAqIEBkbWFfYWRkcmVzczogVGhlIERNQSAoYnVzKSBhZGRyZXNzZXMgb2YgdGhlIHBhZ2VzCj4+ ICsgKiBAcGFnZXNfbGlzdDogdXNlZCBieSBzb21lIHBhZ2UgYWxsb2NhdGlvbiBiYWNrZW5kCj4+ ICsgKgo+PiArICogVGhpcyBpcyBhIHN0cnVjdHVyZSBob2xkaW5nIHRoZSBwYWdlcywgY2FjaGlu Zy0gYW5kIGFwZXJ0dXJlIGJpbmRpbmcKPj4gKyAqIHN0YXR1cyBmb3IgYSBidWZmZXIgb2JqZWN0 IHRoYXQgaXNuJ3QgYmFja2VkIGJ5IGZpeGVkIChWUkFNIC8gQUdQKQo+PiArICogbWVtb3J5Lgo+ PiArICovCj4+ICtzdHJ1Y3QgdHRtX2RtYV90dCB7Cj4+ICvCoMKgwqAgc3RydWN0IHR0bV90dCB0 dG07Cj4+ICvCoMKgwqAgZG1hX2FkZHJfdCAqZG1hX2FkZHJlc3M7Cj4+ICvCoMKgwqAgc3RydWN0 IGxpc3RfaGVhZCBwYWdlc19saXN0Owo+PiArfTsKPj4gKwo+PiArLyoqCj4+ICsgKiB0dG1fdHRf Y3JlYXRlCj4+ICsgKgo+PiArICogQGJvOiBwb2ludGVyIHRvIGEgc3RydWN0IHR0bV9idWZmZXJf b2JqZWN0Cj4+ICsgKiBAemVyb19hbGxvYzogdHJ1ZSBpZiBhbGxvY2F0ZWQgcGFnZXMgbmVlZHMg dG8gYmUgemVyb2VkCj4+ICsgKgo+PiArICogTWFrZSBzdXJlIHdlIGhhdmUgYSBUVE0gc3RydWN0 dXJlIGFsbG9jYXRlZCBmb3IgdGhlIGdpdmVuIEJPLgo+PiArICogTm8gcGFnZXMgYXJlIGFjdHVh bGx5IGFsbG9jYXRlZC4KPj4gKyAqLwo+PiAraW50IHR0bV90dF9jcmVhdGUoc3RydWN0IHR0bV9i dWZmZXJfb2JqZWN0ICpibywgYm9vbCB6ZXJvX2FsbG9jKTsKPj4gKwo+PiArLyoqCj4+ICsgKiB0 dG1fdHRfaW5pdAo+PiArICoKPj4gKyAqIEB0dG06IFRoZSBzdHJ1Y3QgdHRtX3R0Lgo+PiArICog QGJkZXY6IHBvaW50ZXIgdG8gYSBzdHJ1Y3QgdHRtX2JvX2RldmljZToKPj4gKyAqIEBzaXplOiBT aXplIG9mIHRoZSBkYXRhIG5lZWRlZCBiYWNraW5nLgo+PiArICogQHBhZ2VfZmxhZ3M6IFBhZ2Ug ZmxhZ3MgYXMgaWRlbnRpZmllZCBieSBUVE1fUEFHRV9GTEFHX1hYIGZsYWdzLgo+PiArICoKPj4g KyAqIENyZWF0ZSBhIHN0cnVjdCB0dG1fdHQgdG8gYmFjayBkYXRhIHdpdGggc3lzdGVtIG1lbW9y eSBwYWdlcy4KPj4gKyAqIE5vIHBhZ2VzIGFyZSBhY3R1YWxseSBhbGxvY2F0ZWQuCj4+ICsgKiBS ZXR1cm5zOgo+PiArICogTlVMTDogT3V0IG9mIG1lbW9yeS4KPj4gKyAqLwo+PiAraW50IHR0bV90 dF9pbml0KHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsCj4+ ICvCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHNpemUsIHVpbnQzMl90IHBhZ2VfZmxhZ3Mp Owo+PiAraW50IHR0bV9kbWFfdHRfaW5pdChzdHJ1Y3QgdHRtX2RtYV90dCAqdHRtX2RtYSwgc3Ry dWN0IHR0bV9ib19kZXZpY2UgCj4+ICpiZGV2LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 bnNpZ25lZCBsb25nIHNpemUsIHVpbnQzMl90IHBhZ2VfZmxhZ3MpOwo+PiArCj4+ICsvKioKPj4g KyAqIHR0bV90dF9maW5pCj4+ICsgKgo+PiArICogQHR0bTogdGhlIHR0bV90dCBzdHJ1Y3R1cmUu Cj4+ICsgKgo+PiArICogRnJlZSBtZW1vcnkgb2YgdHRtX3R0IHN0cnVjdHVyZQo+PiArICovCj4+ ICt2b2lkIHR0bV90dF9maW5pKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4+ICt2b2lkIHR0bV9kbWFf dHRfZmluaShzdHJ1Y3QgdHRtX2RtYV90dCAqdHRtX2RtYSk7Cj4+ICsKPj4gKy8qKgo+PiArICog dHRtX3R0bV9iaW5kOgo+PiArICoKPj4gKyAqIEB0dG06IFRoZSBzdHJ1Y3QgdHRtX3R0IGNvbnRh aW5pbmcgYmFja2luZyBwYWdlcy4KPj4gKyAqIEBib19tZW06IFRoZSBzdHJ1Y3QgdHRtX21lbV9y ZWcgaWRlbnRpZnlpbmcgdGhlIGJpbmRpbmcgbG9jYXRpb24uCj4+ICsgKgo+PiArICogQmluZCB0 aGUgcGFnZXMgb2YgQHR0bSB0byBhbiBhcGVydHVyZSBsb2NhdGlvbiBpZGVudGlmaWVkIGJ5IEBi b19tZW0KPj4gKyAqLwo+PiAraW50IHR0bV90dF9iaW5kKHN0cnVjdCB0dG1fdHQgKnR0bSwgc3Ry dWN0IHR0bV9tZW1fcmVnICpib19tZW0sCj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdHRtX29w ZXJhdGlvbl9jdHggKmN0eCk7Cj4+ICsKPj4gKy8qKgo+PiArICogdHRtX3R0bV9kZXN0cm95Ogo+ PiArICoKPj4gKyAqIEB0dG06IFRoZSBzdHJ1Y3QgdHRtX3R0Lgo+PiArICoKPj4gKyAqIFVuYmlu ZCwgdW5wb3B1bGF0ZSBhbmQgZGVzdHJveSBjb21tb24gc3RydWN0IHR0bV90dC4KPj4gKyAqLwo+ PiArdm9pZCB0dG1fdHRfZGVzdHJveShzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiArCj4+ICsvKioK Pj4gKyAqIHR0bV90dG1fdW5iaW5kOgo+PiArICoKPj4gKyAqIEB0dG06IFRoZSBzdHJ1Y3QgdHRt X3R0Lgo+PiArICoKPj4gKyAqIFVuYmluZCBhIHN0cnVjdCB0dG1fdHQuCj4+ICsgKi8KPj4gK3Zv aWQgdHRtX3R0X3VuYmluZChzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiArCj4+ICsvKioKPj4gKyAq IHR0bV90dF9zd2FwaW46Cj4+ICsgKgo+PiArICogQHR0bTogVGhlIHN0cnVjdCB0dG1fdHQuCj4+ ICsgKgo+PiArICogU3dhcCBpbiBhIHByZXZpb3VzbHkgc3dhcCBvdXQgdHRtX3R0Lgo+PiArICov Cj4+ICtpbnQgdHRtX3R0X3N3YXBpbihzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiArCj4+ICsvKioK Pj4gKyAqIHR0bV90dF9zZXRfcGxhY2VtZW50X2NhY2hpbmc6Cj4+ICsgKgo+PiArICogQHR0bSBB IHN0cnVjdCB0dG1fdHQgdGhlIGJhY2tpbmcgcGFnZXMgb2Ygd2hpY2ggd2lsbCBjaGFuZ2UgCj4+ IGNhY2hpbmcgcG9saWN5Lgo+PiArICogQHBsYWNlbWVudDogRmxhZyBpbmRpY2F0aW5nIHRoZSBk ZXNpcmVkIGNhY2hpbmcgcG9saWN5Lgo+PiArICoKPj4gKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBj aGFuZ2UgY2FjaGluZyBwb2xpY3kgb2YgYW55IGRlZmF1bHQga2VybmVsIAo+PiBtYXBwaW5ncyBv Zgo+PiArICogdGhlIHBhZ2VzIGJhY2tpbmcgQHR0bS4gSWYgY2hhbmdpbmcgZnJvbSBjYWNoZWQg dG8gdW5jYWNoZWQgb3IKPj4gKyAqIHdyaXRlLWNvbWJpbmVkLAo+PiArICogYWxsIENQVSBjYWNo ZXMgd2lsbCBmaXJzdCBiZSBmbHVzaGVkIHRvIG1ha2Ugc3VyZSB0aGUgZGF0YSBvZiB0aGUgCj4+ IHBhZ2VzCj4+ICsgKiBoaXQgUkFNLiBUaGlzIGZ1bmN0aW9uIG1heSBiZSB2ZXJ5IGNvc3RseSBh cyBpdCBpbnZvbHZlcyBnbG9iYWwgVExCCj4+ICsgKiBhbmQgY2FjaGUgZmx1c2hlcyBhbmQgcG90 ZW50aWFsIHBhZ2Ugc3BsaXR0aW5nIC8gY29tYmluaW5nLgo+PiArICovCj4+ICtpbnQgdHRtX3R0 X3NldF9wbGFjZW1lbnRfY2FjaGluZyhzdHJ1Y3QgdHRtX3R0ICp0dG0sIHVpbnQzMl90IAo+PiBw bGFjZW1lbnQpOwo+PiAraW50IHR0bV90dF9zd2Fwb3V0KHN0cnVjdCB0dG1fdHQgKnR0bSwgc3Ry dWN0IGZpbGUgCj4+ICpwZXJzaXN0ZW50X3N3YXBfc3RvcmFnZSk7Cj4+ICsKPj4gKy8qKgo+PiAr ICogdHRtX3R0X3BvcHVsYXRlIC0gYWxsb2NhdGUgcGFnZXMgZm9yIGEgdHRtCj4+ICsgKgo+PiAr ICogQHR0bTogUG9pbnRlciB0byB0aGUgdHRtX3R0IHN0cnVjdHVyZQo+PiArICoKPj4gKyAqIENh bGxzIHRoZSBkcml2ZXIgbWV0aG9kIHRvIGFsbG9jYXRlIHBhZ2VzIGZvciBhIHR0bQo+PiArICov Cj4+ICtpbnQgdHRtX3R0X3BvcHVsYXRlKHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IHR0bV9v cGVyYXRpb25fY3R4ICpjdHgpOwo+PiArCj4+ICsvKioKPj4gKyAqIHR0bV90dF91bnBvcHVsYXRl IC0gZnJlZSBwYWdlcyBmcm9tIGEgdHRtCj4+ICsgKgo+PiArICogQHR0bTogUG9pbnRlciB0byB0 aGUgdHRtX3R0IHN0cnVjdHVyZQo+PiArICoKPj4gKyAqIENhbGxzIHRoZSBkcml2ZXIgbWV0aG9k IHRvIGZyZWUgYWxsIHBhZ2VzIGZyb20gYSB0dG0KPj4gKyAqLwo+PiArdm9pZCB0dG1fdHRfdW5w b3B1bGF0ZShzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiArCj4+ICsjaWYgSVNfRU5BQkxFRChDT05G SUdfQUdQKQo+PiArI2luY2x1ZGUgPGxpbnV4L2FncF9iYWNrZW5kLmg+Cj4+ICsKPj4gKy8qKgo+ PiArICogdHRtX2FncF90dF9jcmVhdGUKPj4gKyAqCj4+ICsgKiBAYmRldjogUG9pbnRlciB0byBh IHN0cnVjdCB0dG1fYm9fZGV2aWNlLgo+PiArICogQGJyaWRnZTogVGhlIGFncCBicmlkZ2UgdGhp cyBkZXZpY2UgaXMgc2l0dGluZyBvbi4KPj4gKyAqIEBzaXplOiBTaXplIG9mIHRoZSBkYXRhIG5l ZWRlZCBiYWNraW5nLgo+PiArICogQHBhZ2VfZmxhZ3M6IFBhZ2UgZmxhZ3MgYXMgaWRlbnRpZmll ZCBieSBUVE1fUEFHRV9GTEFHX1hYIGZsYWdzLgo+PiArICoKPj4gKyAqCj4+ICsgKiBDcmVhdGUg YSBUVE0gYmFja2VuZCB0aGF0IHVzZXMgdGhlIGluZGljYXRlZCBBR1AgYnJpZGdlIGFzIGFuIAo+ PiBhcGVydHVyZQo+PiArICogZm9yIFRUIG1lbW9yeS4gVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBs aW51eCBhZ3BnYXJ0IGludGVyZmFjZSB0bwo+PiArICogYmluZCBhbmQgdW5iaW5kIG1lbW9yeSBi YWNraW5nIGEgdHRtX3R0Lgo+PiArICovCj4+ICtzdHJ1Y3QgdHRtX3R0ICp0dG1fYWdwX3R0X2Ny ZWF0ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBhZ3BfYnJpZGdlX2RhdGEgKmJyaWRnZSwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdWludDMyX3QgcGFn ZV9mbGFncyk7Cj4+ICtpbnQgdHRtX2FncF90dF9wb3B1bGF0ZShzdHJ1Y3QgdHRtX3R0ICp0dG0s IHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAKPj4gKmN0eCk7Cj4+ICt2b2lkIHR0bV9hZ3BfdHRf dW5wb3B1bGF0ZShzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiArI2VuZGlmCj4+ICsKPj4gKyNlbmRp ZgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=