From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 3/5] drm/ttm: move ttm_tt defines into ttm_tt.h Date: Tue, 6 Mar 2018 10:13:10 +0100 Message-ID: <7bba488d-3b91-3b26-001c-2d7e02331edf@gmail.com> References: <20180227115000.4105-1-christian.koenig@amd.com> <20180227115000.4105-3-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180227115000.4105-3-christian.koenig-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, "Daenzer, Michel" , Thomas Hellstrom List-Id: dri-devel@lists.freedesktop.org SGkgTWljaGVsICYgVGhvbWFzLAoKYW55IG1vcmUgY29tbWVudHMgb24gdGhpcz8gT3IgY2FuIEkg Y29tbWl0IGl0PwoKVGhhbmtzLApDaHJpc3RpYW4uCgpBbSAyNy4wMi4yMDE4IHVtIDEyOjQ5IHNj aHJpZWIgQ2hyaXN0aWFuIEvDtm5pZzoKPiBMZXQncyBzdG9wIG1hbmdsaW5nIGV2ZXJ5dGhpbmcg aW4gYSBzaW5nbGUgaGVhZGVyIGFuZCBjcmVhdGUgb25lIGhlYWRlcgo+IHBlciBvYmplY3QgaW5z dGVhZC4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2Vu aWdAYW1kLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3R0LmMgICAgfCAg IDYgLQo+ICAgaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19kcml2ZXIuaCB8IDIzNyArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICBpbmNsdWRlL2RybS90dG0vdHRtX3R0LmggICAg ICAgIHwgMjcyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIDMg ZmlsZXMgY2hhbmdlZCwgMjczIGluc2VydGlvbnMoKyksIDI0MiBkZWxldGlvbnMoLSkKPiAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS90dG0vdHRtX3R0LmgKPgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV90dC5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1f dHQuYwo+IGluZGV4IDBlZTNiOGYxMTYwNS4uOGUwYjUyNWNkYTAwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS90dG0vdHRtX3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0 bV90dC5jCj4gQEAgLTMxLDE3ICszMSwxMSBAQAo+ICAgI2RlZmluZSBwcl9mbXQoZm10KSAiW1RU TV0gIiBmbXQKPiAgIAo+ICAgI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+Cj4gLSNpbmNsdWRlIDxs aW51eC9oaWdobWVtLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgo+ICAgI2luY2x1 ZGUgPGxpbnV4L3NobWVtX2ZzLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvZmlsZS5oPgo+IC0jaW5j bHVkZSA8bGludXgvc3dhcC5oPgo+IC0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+IC0jaW5jbHVk ZSA8bGludXgvZXhwb3J0Lmg+Cj4gICAjaW5jbHVkZSA8ZHJtL2RybV9jYWNoZS5oPgo+IC0jaW5j bHVkZSA8ZHJtL3R0bS90dG1fbW9kdWxlLmg+Cj4gICAjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9f ZHJpdmVyLmg+Cj4gLSNpbmNsdWRlIDxkcm0vdHRtL3R0bV9wbGFjZW1lbnQuaD4KPiAgICNpbmNs dWRlIDxkcm0vdHRtL3R0bV9wYWdlX2FsbG9jLmg+Cj4gICAjaWZkZWYgQ09ORklHX1g4Ngo+ICAg I2luY2x1ZGUgPGFzbS9zZXRfbWVtb3J5Lmg+Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3R0 bS90dG1fYm9fZHJpdmVyLmggYi9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oCj4gaW5k ZXggNDMxMmI1MzI2ZjBiLi5mOGUyNTE1YjQwMWYgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0v dHRtL3R0bV9ib19kcml2ZXIuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVy LmgKPiBAQCAtNDIsMTExICs0MiwxMCBAQAo+ICAgI2luY2x1ZGUgInR0bV9tZW1vcnkuaCIKPiAg ICNpbmNsdWRlICJ0dG1fbW9kdWxlLmgiCj4gICAjaW5jbHVkZSAidHRtX3BsYWNlbWVudC5oIgo+ ICsjaW5jbHVkZSAidHRtX3R0LmgiCj4gICAKPiAgICNkZWZpbmUgVFRNX01BWF9CT19QUklPUklU WQk0VQo+ICAgCj4gLXN0cnVjdCB0dG1fYmFja2VuZF9mdW5jIHsKPiAtCS8qKgo+IC0JICogc3Ry dWN0IHR0bV9iYWNrZW5kX2Z1bmMgbWVtYmVyIGJpbmQKPiAtCSAqCj4gLQkgKiBAdHRtOiBQb2lu dGVyIHRvIGEgc3RydWN0IHR0bV90dC4KPiAtCSAqIEBib19tZW06IFBvaW50ZXIgdG8gYSBzdHJ1 Y3QgdHRtX21lbV9yZWcgZGVzY3JpYmluZyB0aGUKPiAtCSAqIG1lbW9yeSB0eXBlIGFuZCBsb2Nh dGlvbiBmb3IgYmluZGluZy4KPiAtCSAqCj4gLQkgKiBCaW5kIHRoZSBiYWNrZW5kIHBhZ2VzIGlu dG8gdGhlIGFwZXJ0dXJlIGluIHRoZSBsb2NhdGlvbgo+IC0JICogaW5kaWNhdGVkIGJ5IEBib19t ZW0uIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlCj4gLQkgKiBkaWZmZXJl bmNlcyBiZXR3ZWVuIGFwZXJ0dXJlIGFuZCBzeXN0ZW0gcGFnZSBzaXplcy4KPiAtCSAqLwo+IC0J aW50ICgqYmluZCkgKHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IHR0bV9tZW1fcmVnICpib19t ZW0pOwo+IC0KPiAtCS8qKgo+IC0JICogc3RydWN0IHR0bV9iYWNrZW5kX2Z1bmMgbWVtYmVyIHVu YmluZAo+IC0JICoKPiAtCSAqIEB0dG06IFBvaW50ZXIgdG8gYSBzdHJ1Y3QgdHRtX3R0Lgo+IC0J ICoKPiAtCSAqIFVuYmluZCBwcmV2aW91c2x5IGJvdW5kIGJhY2tlbmQgcGFnZXMuIFRoaXMgZnVu Y3Rpb24gc2hvdWxkIGJlCj4gLQkgKiBhYmxlIHRvIGhhbmRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVu IGFwZXJ0dXJlIGFuZCBzeXN0ZW0gcGFnZSBzaXplcy4KPiAtCSAqLwo+IC0JaW50ICgqdW5iaW5k KSAoc3RydWN0IHR0bV90dCAqdHRtKTsKPiAtCj4gLQkvKioKPiAtCSAqIHN0cnVjdCB0dG1fYmFj a2VuZF9mdW5jIG1lbWJlciBkZXN0cm95Cj4gLQkgKgo+IC0JICogQHR0bTogUG9pbnRlciB0byBh IHN0cnVjdCB0dG1fdHQuCj4gLQkgKgo+IC0JICogRGVzdHJveSB0aGUgYmFja2VuZC4gVGhpcyB3 aWxsIGJlIGNhbGwgYmFjayBmcm9tIHR0bV90dF9kZXN0cm95IHNvCj4gLQkgKiBkb24ndCBjYWxs IHR0bV90dF9kZXN0cm95IGZyb20gdGhlIGNhbGxiYWNrIG9yIGluZmluaXRlIGxvb3AuCj4gLQkg Ki8KPiAtCXZvaWQgKCpkZXN0cm95KSAoc3RydWN0IHR0bV90dCAqdHRtKTsKPiAtfTsKPiAtCj4g LSNkZWZpbmUgVFRNX1BBR0VfRkxBR19XUklURSAgICAgICAgICAgKDEgPDwgMykKPiAtI2RlZmlu ZSBUVE1fUEFHRV9GTEFHX1NXQVBQRUQgICAgICAgICAoMSA8PCA0KQo+IC0jZGVmaW5lIFRUTV9Q QUdFX0ZMQUdfUEVSU0lTVEVOVF9TV0FQICgxIDw8IDUpCj4gLSNkZWZpbmUgVFRNX1BBR0VfRkxB R19aRVJPX0FMTE9DICAgICAgKDEgPDwgNikKPiAtI2RlZmluZSBUVE1fUEFHRV9GTEFHX0RNQTMy ICAgICAgICAgICAoMSA8PCA3KQo+IC0jZGVmaW5lIFRUTV9QQUdFX0ZMQUdfU0cgICAgICAgICAg ICAgICgxIDw8IDgpCj4gLSNkZWZpbmUgVFRNX1BBR0VfRkxBR19OT19SRVRSWQkgICAgICAoMSA8 PCA5KQo+IC0KPiAtZW51bSB0dG1fY2FjaGluZ19zdGF0ZSB7Cj4gLQl0dF91bmNhY2hlZCwKPiAt CXR0X3djLAo+IC0JdHRfY2FjaGVkCj4gLX07Cj4gLQo+IC0vKioKPiAtICogc3RydWN0IHR0bV90 dAo+IC0gKgo+IC0gKiBAYmRldjogUG9pbnRlciB0byBhIHN0cnVjdCB0dG1fYm9fZGV2aWNlLgo+ IC0gKiBAZnVuYzogUG9pbnRlciB0byBhIHN0cnVjdCB0dG1fYmFja2VuZF9mdW5jIHRoYXQgZGVz Y3JpYmVzCj4gLSAqIHRoZSBiYWNrZW5kIG1ldGhvZHMuCj4gLSAqIHBvaW50ZXIuCj4gLSAqIEBw YWdlczogQXJyYXkgb2YgcGFnZXMgYmFja2luZyB0aGUgZGF0YS4KPiAtICogQG51bV9wYWdlczog TnVtYmVyIG9mIHBhZ2VzIGluIHRoZSBwYWdlIGFycmF5Lgo+IC0gKiBAYmRldjogUG9pbnRlciB0 byB0aGUgY3VycmVudCBzdHJ1Y3QgdHRtX2JvX2RldmljZS4KPiAtICogQGJlOiBQb2ludGVyIHRv IHRoZSB0dG0gYmFja2VuZC4KPiAtICogQHN3YXBfc3RvcmFnZTogUG9pbnRlciB0byBzaG1lbSBz dHJ1Y3QgZmlsZSBmb3Igc3dhcCBzdG9yYWdlLgo+IC0gKiBAY2FjaGluZ19zdGF0ZTogVGhlIGN1 cnJlbnQgY2FjaGluZyBzdGF0ZSBvZiB0aGUgcGFnZXMuCj4gLSAqIEBzdGF0ZTogVGhlIGN1cnJl bnQgYmluZGluZyBzdGF0ZSBvZiB0aGUgcGFnZXMuCj4gLSAqCj4gLSAqIFRoaXMgaXMgYSBzdHJ1 Y3R1cmUgaG9sZGluZyB0aGUgcGFnZXMsIGNhY2hpbmctIGFuZCBhcGVydHVyZSBiaW5kaW5nCj4g LSAqIHN0YXR1cyBmb3IgYSBidWZmZXIgb2JqZWN0IHRoYXQgaXNuJ3QgYmFja2VkIGJ5IGZpeGVk IChWUkFNIC8gQUdQKQo+IC0gKiBtZW1vcnkuCj4gLSAqLwo+IC0KPiAtc3RydWN0IHR0bV90dCB7 Cj4gLQlzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldjsKPiAtCXN0cnVjdCB0dG1fYmFja2VuZF9m dW5jICpmdW5jOwo+IC0Jc3RydWN0IHBhZ2UgKipwYWdlczsKPiAtCXVpbnQzMl90IHBhZ2VfZmxh Z3M7Cj4gLQl1bnNpZ25lZCBsb25nIG51bV9wYWdlczsKPiAtCXN0cnVjdCBzZ190YWJsZSAqc2c7 IC8qIGZvciBTRyBvYmplY3RzIHZpYSBkbWEtYnVmICovCj4gLQlzdHJ1Y3QgZmlsZSAqc3dhcF9z dG9yYWdlOwo+IC0JZW51bSB0dG1fY2FjaGluZ19zdGF0ZSBjYWNoaW5nX3N0YXRlOwo+IC0JZW51 bSB7Cj4gLQkJdHRfYm91bmQsCj4gLQkJdHRfdW5ib3VuZCwKPiAtCQl0dF91bnBvcHVsYXRlZCwK PiAtCX0gc3RhdGU7Cj4gLX07Cj4gLQo+IC0vKioKPiAtICogc3RydWN0IHR0bV9kbWFfdHQKPiAt ICoKPiAtICogQHR0bTogQmFzZSB0dG1fdHQgc3RydWN0Lgo+IC0gKiBAZG1hX2FkZHJlc3M6IFRo ZSBETUEgKGJ1cykgYWRkcmVzc2VzIG9mIHRoZSBwYWdlcwo+IC0gKiBAcGFnZXNfbGlzdDogdXNl ZCBieSBzb21lIHBhZ2UgYWxsb2NhdGlvbiBiYWNrZW5kCj4gLSAqCj4gLSAqIFRoaXMgaXMgYSBz dHJ1Y3R1cmUgaG9sZGluZyB0aGUgcGFnZXMsIGNhY2hpbmctIGFuZCBhcGVydHVyZSBiaW5kaW5n Cj4gLSAqIHN0YXR1cyBmb3IgYSBidWZmZXIgb2JqZWN0IHRoYXQgaXNuJ3QgYmFja2VkIGJ5IGZp eGVkIChWUkFNIC8gQUdQKQo+IC0gKiBtZW1vcnkuCj4gLSAqLwo+IC1zdHJ1Y3QgdHRtX2RtYV90 dCB7Cj4gLQlzdHJ1Y3QgdHRtX3R0IHR0bTsKPiAtCWRtYV9hZGRyX3QgKmRtYV9hZGRyZXNzOwo+ IC0Jc3RydWN0IGxpc3RfaGVhZCBwYWdlc19saXN0Owo+IC19Owo+IC0KPiAgICNkZWZpbmUgVFRN X01FTVRZUEVfRkxBR19GSVhFRCAgICAgICAgICgxIDw8IDApCS8qIEZpeGVkIChvbi1jYXJkKSBQ Q0kgbWVtb3J5ICovCj4gICAjZGVmaW5lIFRUTV9NRU1UWVBFX0ZMQUdfTUFQUEFCTEUgICAgICAo MSA8PCAxKQkvKiBNZW1vcnkgbWFwcGFibGUgKi8KPiAgICNkZWZpbmUgVFRNX01FTVRZUEVfRkxB R19DTUEgICAgICAgICAgICgxIDw8IDMpCS8qIENhbid0IG1hcCBhcGVydHVyZSAqLwo+IEBAIC02 MTAsMTE3ICs1MDksNiBAQCB0dG1fZmxhZ19tYXNrZWQodWludDMyX3QgKm9sZCwgdWludDMyX3Qg bmV3LCB1aW50MzJfdCBtYXNrKQo+ICAgCXJldHVybiAqb2xkOwo+ICAgfQo+ICAgCj4gLS8qKgo+ IC0gKiB0dG1fdHRfY3JlYXRlCj4gLSAqCj4gLSAqIEBibzogcG9pbnRlciB0byBhIHN0cnVjdCB0 dG1fYnVmZmVyX29iamVjdAo+IC0gKiBAemVyb19hbGxvYzogdHJ1ZSBpZiBhbGxvY2F0ZWQgcGFn ZXMgbmVlZHMgdG8gYmUgemVyb2VkCj4gLSAqCj4gLSAqIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgVFRN IHN0cnVjdHVyZSBhbGxvY2F0ZWQgZm9yIHRoZSBnaXZlbiBCTy4KPiAtICogTm8gcGFnZXMgYXJl IGFjdHVhbGx5IGFsbG9jYXRlZC4KPiAtICovCj4gLWludCB0dG1fdHRfY3JlYXRlKHN0cnVjdCB0 dG1fYnVmZmVyX29iamVjdCAqYm8sIGJvb2wgemVyb19hbGxvYyk7Cj4gLQo+IC0vKioKPiAtICog dHRtX3R0X2luaXQKPiAtICoKPiAtICogQHR0bTogVGhlIHN0cnVjdCB0dG1fdHQuCj4gLSAqIEBi ZGV2OiBwb2ludGVyIHRvIGEgc3RydWN0IHR0bV9ib19kZXZpY2U6Cj4gLSAqIEBzaXplOiBTaXpl IG9mIHRoZSBkYXRhIG5lZWRlZCBiYWNraW5nLgo+IC0gKiBAcGFnZV9mbGFnczogUGFnZSBmbGFn cyBhcyBpZGVudGlmaWVkIGJ5IFRUTV9QQUdFX0ZMQUdfWFggZmxhZ3MuCj4gLSAqCj4gLSAqIENy ZWF0ZSBhIHN0cnVjdCB0dG1fdHQgdG8gYmFjayBkYXRhIHdpdGggc3lzdGVtIG1lbW9yeSBwYWdl cy4KPiAtICogTm8gcGFnZXMgYXJlIGFjdHVhbGx5IGFsbG9jYXRlZC4KPiAtICogUmV0dXJuczoK PiAtICogTlVMTDogT3V0IG9mIG1lbW9yeS4KPiAtICovCj4gLWludCB0dG1fdHRfaW5pdChzdHJ1 Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAo+IC0JCXVuc2lnbmVk IGxvbmcgc2l6ZSwgdWludDMyX3QgcGFnZV9mbGFncyk7Cj4gLWludCB0dG1fZG1hX3R0X2luaXQo c3RydWN0IHR0bV9kbWFfdHQgKnR0bV9kbWEsIHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAo+ IC0JCSAgICB1bnNpZ25lZCBsb25nIHNpemUsIHVpbnQzMl90IHBhZ2VfZmxhZ3MpOwo+IC0KPiAt LyoqCj4gLSAqIHR0bV90dF9maW5pCj4gLSAqCj4gLSAqIEB0dG06IHRoZSB0dG1fdHQgc3RydWN0 dXJlLgo+IC0gKgo+IC0gKiBGcmVlIG1lbW9yeSBvZiB0dG1fdHQgc3RydWN0dXJlCj4gLSAqLwo+ IC12b2lkIHR0bV90dF9maW5pKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4gLXZvaWQgdHRtX2RtYV90 dF9maW5pKHN0cnVjdCB0dG1fZG1hX3R0ICp0dG1fZG1hKTsKPiAtCj4gLS8qKgo+IC0gKiB0dG1f dHRtX2JpbmQ6Cj4gLSAqCj4gLSAqIEB0dG06IFRoZSBzdHJ1Y3QgdHRtX3R0IGNvbnRhaW5pbmcg YmFja2luZyBwYWdlcy4KPiAtICogQGJvX21lbTogVGhlIHN0cnVjdCB0dG1fbWVtX3JlZyBpZGVu dGlmeWluZyB0aGUgYmluZGluZyBsb2NhdGlvbi4KPiAtICoKPiAtICogQmluZCB0aGUgcGFnZXMg b2YgQHR0bSB0byBhbiBhcGVydHVyZSBsb2NhdGlvbiBpZGVudGlmaWVkIGJ5IEBib19tZW0KPiAt ICovCj4gLWludCB0dG1fdHRfYmluZChzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCB0dG1fbWVt X3JlZyAqYm9fbWVtLAo+IC0JCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4KTsKPiAtCj4g LS8qKgo+IC0gKiB0dG1fdHRtX2Rlc3Ryb3k6Cj4gLSAqCj4gLSAqIEB0dG06IFRoZSBzdHJ1Y3Qg dHRtX3R0Lgo+IC0gKgo+IC0gKiBVbmJpbmQsIHVucG9wdWxhdGUgYW5kIGRlc3Ryb3kgY29tbW9u IHN0cnVjdCB0dG1fdHQuCj4gLSAqLwo+IC12b2lkIHR0bV90dF9kZXN0cm95KHN0cnVjdCB0dG1f dHQgKnR0bSk7Cj4gLQo+IC0vKioKPiAtICogdHRtX3R0bV91bmJpbmQ6Cj4gLSAqCj4gLSAqIEB0 dG06IFRoZSBzdHJ1Y3QgdHRtX3R0Lgo+IC0gKgo+IC0gKiBVbmJpbmQgYSBzdHJ1Y3QgdHRtX3R0 Lgo+IC0gKi8KPiAtdm9pZCB0dG1fdHRfdW5iaW5kKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4gLQo+ IC0vKioKPiAtICogdHRtX3R0X3N3YXBpbjoKPiAtICoKPiAtICogQHR0bTogVGhlIHN0cnVjdCB0 dG1fdHQuCj4gLSAqCj4gLSAqIFN3YXAgaW4gYSBwcmV2aW91c2x5IHN3YXAgb3V0IHR0bV90dC4K PiAtICovCj4gLWludCB0dG1fdHRfc3dhcGluKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4gLQo+IC0v KioKPiAtICogdHRtX3R0X3NldF9wbGFjZW1lbnRfY2FjaGluZzoKPiAtICoKPiAtICogQHR0bSBB IHN0cnVjdCB0dG1fdHQgdGhlIGJhY2tpbmcgcGFnZXMgb2Ygd2hpY2ggd2lsbCBjaGFuZ2UgY2Fj aGluZyBwb2xpY3kuCj4gLSAqIEBwbGFjZW1lbnQ6IEZsYWcgaW5kaWNhdGluZyB0aGUgZGVzaXJl ZCBjYWNoaW5nIHBvbGljeS4KPiAtICoKPiAtICogVGhpcyBmdW5jdGlvbiB3aWxsIGNoYW5nZSBj YWNoaW5nIHBvbGljeSBvZiBhbnkgZGVmYXVsdCBrZXJuZWwgbWFwcGluZ3Mgb2YKPiAtICogdGhl IHBhZ2VzIGJhY2tpbmcgQHR0bS4gSWYgY2hhbmdpbmcgZnJvbSBjYWNoZWQgdG8gdW5jYWNoZWQg b3IKPiAtICogd3JpdGUtY29tYmluZWQsCj4gLSAqIGFsbCBDUFUgY2FjaGVzIHdpbGwgZmlyc3Qg YmUgZmx1c2hlZCB0byBtYWtlIHN1cmUgdGhlIGRhdGEgb2YgdGhlIHBhZ2VzCj4gLSAqIGhpdCBS QU0uIFRoaXMgZnVuY3Rpb24gbWF5IGJlIHZlcnkgY29zdGx5IGFzIGl0IGludm9sdmVzIGdsb2Jh bCBUTEIKPiAtICogYW5kIGNhY2hlIGZsdXNoZXMgYW5kIHBvdGVudGlhbCBwYWdlIHNwbGl0dGlu ZyAvIGNvbWJpbmluZy4KPiAtICovCj4gLWludCB0dG1fdHRfc2V0X3BsYWNlbWVudF9jYWNoaW5n KHN0cnVjdCB0dG1fdHQgKnR0bSwgdWludDMyX3QgcGxhY2VtZW50KTsKPiAtaW50IHR0bV90dF9z d2Fwb3V0KHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IGZpbGUgKnBlcnNpc3RlbnRfc3dhcF9z dG9yYWdlKTsKPiAtCj4gLS8qKgo+IC0gKiB0dG1fdHRfcG9wdWxhdGUgLSBhbGxvY2F0ZSBwYWdl cyBmb3IgYSB0dG0KPiAtICoKPiAtICogQHR0bTogUG9pbnRlciB0byB0aGUgdHRtX3R0IHN0cnVj dHVyZQo+IC0gKgo+IC0gKiBDYWxscyB0aGUgZHJpdmVyIG1ldGhvZCB0byBhbGxvY2F0ZSBwYWdl cyBmb3IgYSB0dG0KPiAtICovCj4gLWludCB0dG1fdHRfcG9wdWxhdGUoc3RydWN0IHR0bV90dCAq dHRtLCBzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0eCk7Cj4gLQo+IC0vKioKPiAtICogdHRt X3R0X3VucG9wdWxhdGUgLSBmcmVlIHBhZ2VzIGZyb20gYSB0dG0KPiAtICoKPiAtICogQHR0bTog UG9pbnRlciB0byB0aGUgdHRtX3R0IHN0cnVjdHVyZQo+IC0gKgo+IC0gKiBDYWxscyB0aGUgZHJp dmVyIG1ldGhvZCB0byBmcmVlIGFsbCBwYWdlcyBmcm9tIGEgdHRtCj4gLSAqLwo+IC12b2lkIHR0 bV90dF91bnBvcHVsYXRlKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4gLQo+ICAgLyoKPiAgICAqIHR0 bV9iby5jCj4gICAgKi8KPiBAQCAtMTA3NCwyNyArODYyLDQgQEAgcGdwcm90X3QgdHRtX2lvX3By b3QodWludDMyX3QgY2FjaGluZ19mbGFncywgcGdwcm90X3QgdG1wKTsKPiAgIAo+ICAgZXh0ZXJu IGNvbnN0IHN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlcl9mdW5jIHR0bV9ib19tYW5hZ2VyX2Z1 bmM7Cj4gICAKPiAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0FHUCkKPiAtI2luY2x1ZGUgPGxpbnV4 L2FncF9iYWNrZW5kLmg+Cj4gLQo+IC0vKioKPiAtICogdHRtX2FncF90dF9jcmVhdGUKPiAtICoK PiAtICogQGJkZXY6IFBvaW50ZXIgdG8gYSBzdHJ1Y3QgdHRtX2JvX2RldmljZS4KPiAtICogQGJy aWRnZTogVGhlIGFncCBicmlkZ2UgdGhpcyBkZXZpY2UgaXMgc2l0dGluZyBvbi4KPiAtICogQHNp emU6IFNpemUgb2YgdGhlIGRhdGEgbmVlZGVkIGJhY2tpbmcuCj4gLSAqIEBwYWdlX2ZsYWdzOiBQ YWdlIGZsYWdzIGFzIGlkZW50aWZpZWQgYnkgVFRNX1BBR0VfRkxBR19YWCBmbGFncy4KPiAtICoK PiAtICoKPiAtICogQ3JlYXRlIGEgVFRNIGJhY2tlbmQgdGhhdCB1c2VzIHRoZSBpbmRpY2F0ZWQg QUdQIGJyaWRnZSBhcyBhbiBhcGVydHVyZQo+IC0gKiBmb3IgVFQgbWVtb3J5LiBUaGlzIGZ1bmN0 aW9uIHVzZXMgdGhlIGxpbnV4IGFncGdhcnQgaW50ZXJmYWNlIHRvCj4gLSAqIGJpbmQgYW5kIHVu YmluZCBtZW1vcnkgYmFja2luZyBhIHR0bV90dC4KPiAtICovCj4gLXN0cnVjdCB0dG1fdHQgKnR0 bV9hZ3BfdHRfY3JlYXRlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAo+IC0JCQkJIHN0cnVj dCBhZ3BfYnJpZGdlX2RhdGEgKmJyaWRnZSwKPiAtCQkJCSB1bnNpZ25lZCBsb25nIHNpemUsIHVp bnQzMl90IHBhZ2VfZmxhZ3MpOwo+IC1pbnQgdHRtX2FncF90dF9wb3B1bGF0ZShzdHJ1Y3QgdHRt X3R0ICp0dG0sIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4KTsKPiAtdm9pZCB0dG1fYWdw X3R0X3VucG9wdWxhdGUoc3RydWN0IHR0bV90dCAqdHRtKTsKPiAtI2VuZGlmCj4gLQo+ICAgI2Vu ZGlmCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3R0bS90dG1fdHQuaCBiL2luY2x1ZGUvZHJt L3R0bS90dG1fdHQuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAw Li45Yzc4NTU2YjQ4OGUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5jbHVkZS9kcm0vdHRtL3R0 bV90dC5oCj4gQEAgLTAsMCArMSwyNzIgQEAKPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqCj4g KyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA5IFZtd2FyZSwgSW5jLiwgUGFsbyBBbHRvLCBDQS4s IFVTQQo+ICsgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlCj4gKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKPiArICogd2l0aG91dCBsaW1pdGF0aW9uIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAo+ICsgKiBkaXN0 cmlidXRlLCBzdWIgbGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvCj4gKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwo+ICsgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIChpbmNsdWRpbmcgdGhlCj4gKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCj4gKyAqIG9mIHRo ZSBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5G UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQ09QWVJJR0hUIEhPTERFUlMs IEFVVEhPUlMgQU5EL09SIElUUyBTVVBQTElFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCj4g KyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUgo+ICsgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCj4gKyAqIFVTRSBPUiBPVEhF UiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K PiArI2lmbmRlZiBfVFRNX1RUX0hfCj4gKyNkZWZpbmUgX1RUTV9UVF9IXwo+ICsKPiArI2luY2x1 ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gKwo+ICtzdHJ1Y3QgdHRtX3R0Owo+ICtzdHJ1Y3QgdHRtX21l bV9yZWc7Cj4gK3N0cnVjdCB0dG1fYnVmZmVyX29iamVjdDsKPiArc3RydWN0IHR0bV9vcGVyYXRp b25fY3R4Owo+ICsKPiArI2RlZmluZSBUVE1fUEFHRV9GTEFHX1dSSVRFICAgICAgICAgICAoMSA8 PCAzKQo+ICsjZGVmaW5lIFRUTV9QQUdFX0ZMQUdfU1dBUFBFRCAgICAgICAgICgxIDw8IDQpCj4g KyNkZWZpbmUgVFRNX1BBR0VfRkxBR19QRVJTSVNURU5UX1NXQVAgKDEgPDwgNSkKPiArI2RlZmlu ZSBUVE1fUEFHRV9GTEFHX1pFUk9fQUxMT0MgICAgICAoMSA8PCA2KQo+ICsjZGVmaW5lIFRUTV9Q QUdFX0ZMQUdfRE1BMzIgICAgICAgICAgICgxIDw8IDcpCj4gKyNkZWZpbmUgVFRNX1BBR0VfRkxB R19TRyAgICAgICAgICAgICAgKDEgPDwgOCkKPiArI2RlZmluZSBUVE1fUEFHRV9GTEFHX05PX1JF VFJZCSAgICAgICgxIDw8IDkpCj4gKwo+ICtlbnVtIHR0bV9jYWNoaW5nX3N0YXRlIHsKPiArCXR0 X3VuY2FjaGVkLAo+ICsJdHRfd2MsCj4gKwl0dF9jYWNoZWQKPiArfTsKPiArCj4gK3N0cnVjdCB0 dG1fYmFja2VuZF9mdW5jIHsKPiArCS8qKgo+ICsJICogc3RydWN0IHR0bV9iYWNrZW5kX2Z1bmMg bWVtYmVyIGJpbmQKPiArCSAqCj4gKwkgKiBAdHRtOiBQb2ludGVyIHRvIGEgc3RydWN0IHR0bV90 dC4KPiArCSAqIEBib19tZW06IFBvaW50ZXIgdG8gYSBzdHJ1Y3QgdHRtX21lbV9yZWcgZGVzY3Jp YmluZyB0aGUKPiArCSAqIG1lbW9yeSB0eXBlIGFuZCBsb2NhdGlvbiBmb3IgYmluZGluZy4KPiAr CSAqCj4gKwkgKiBCaW5kIHRoZSBiYWNrZW5kIHBhZ2VzIGludG8gdGhlIGFwZXJ0dXJlIGluIHRo ZSBsb2NhdGlvbgo+ICsJICogaW5kaWNhdGVkIGJ5IEBib19tZW0uIFRoaXMgZnVuY3Rpb24gc2hv dWxkIGJlIGFibGUgdG8gaGFuZGxlCj4gKwkgKiBkaWZmZXJlbmNlcyBiZXR3ZWVuIGFwZXJ0dXJl IGFuZCBzeXN0ZW0gcGFnZSBzaXplcy4KPiArCSAqLwo+ICsJaW50ICgqYmluZCkgKHN0cnVjdCB0 dG1fdHQgKnR0bSwgc3RydWN0IHR0bV9tZW1fcmVnICpib19tZW0pOwo+ICsKPiArCS8qKgo+ICsJ ICogc3RydWN0IHR0bV9iYWNrZW5kX2Z1bmMgbWVtYmVyIHVuYmluZAo+ICsJICoKPiArCSAqIEB0 dG06IFBvaW50ZXIgdG8gYSBzdHJ1Y3QgdHRtX3R0Lgo+ICsJICoKPiArCSAqIFVuYmluZCBwcmV2 aW91c2x5IGJvdW5kIGJhY2tlbmQgcGFnZXMuIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlCj4gKwkg KiBhYmxlIHRvIGhhbmRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGFwZXJ0dXJlIGFuZCBzeXN0ZW0g cGFnZSBzaXplcy4KPiArCSAqLwo+ICsJaW50ICgqdW5iaW5kKSAoc3RydWN0IHR0bV90dCAqdHRt KTsKPiArCj4gKwkvKioKPiArCSAqIHN0cnVjdCB0dG1fYmFja2VuZF9mdW5jIG1lbWJlciBkZXN0 cm95Cj4gKwkgKgo+ICsJICogQHR0bTogUG9pbnRlciB0byBhIHN0cnVjdCB0dG1fdHQuCj4gKwkg Kgo+ICsJICogRGVzdHJveSB0aGUgYmFja2VuZC4gVGhpcyB3aWxsIGJlIGNhbGwgYmFjayBmcm9t IHR0bV90dF9kZXN0cm95IHNvCj4gKwkgKiBkb24ndCBjYWxsIHR0bV90dF9kZXN0cm95IGZyb20g dGhlIGNhbGxiYWNrIG9yIGluZmluaXRlIGxvb3AuCj4gKwkgKi8KPiArCXZvaWQgKCpkZXN0cm95 KSAoc3RydWN0IHR0bV90dCAqdHRtKTsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgdHRt X3R0Cj4gKyAqCj4gKyAqIEBiZGV2OiBQb2ludGVyIHRvIGEgc3RydWN0IHR0bV9ib19kZXZpY2Uu Cj4gKyAqIEBmdW5jOiBQb2ludGVyIHRvIGEgc3RydWN0IHR0bV9iYWNrZW5kX2Z1bmMgdGhhdCBk ZXNjcmliZXMKPiArICogdGhlIGJhY2tlbmQgbWV0aG9kcy4KPiArICogcG9pbnRlci4KPiArICog QHBhZ2VzOiBBcnJheSBvZiBwYWdlcyBiYWNraW5nIHRoZSBkYXRhLgo+ICsgKiBAbnVtX3BhZ2Vz OiBOdW1iZXIgb2YgcGFnZXMgaW4gdGhlIHBhZ2UgYXJyYXkuCj4gKyAqIEBiZGV2OiBQb2ludGVy IHRvIHRoZSBjdXJyZW50IHN0cnVjdCB0dG1fYm9fZGV2aWNlLgo+ICsgKiBAYmU6IFBvaW50ZXIg dG8gdGhlIHR0bSBiYWNrZW5kLgo+ICsgKiBAc3dhcF9zdG9yYWdlOiBQb2ludGVyIHRvIHNobWVt IHN0cnVjdCBmaWxlIGZvciBzd2FwIHN0b3JhZ2UuCj4gKyAqIEBjYWNoaW5nX3N0YXRlOiBUaGUg Y3VycmVudCBjYWNoaW5nIHN0YXRlIG9mIHRoZSBwYWdlcy4KPiArICogQHN0YXRlOiBUaGUgY3Vy cmVudCBiaW5kaW5nIHN0YXRlIG9mIHRoZSBwYWdlcy4KPiArICoKPiArICogVGhpcyBpcyBhIHN0 cnVjdHVyZSBob2xkaW5nIHRoZSBwYWdlcywgY2FjaGluZy0gYW5kIGFwZXJ0dXJlIGJpbmRpbmcK PiArICogc3RhdHVzIGZvciBhIGJ1ZmZlciBvYmplY3QgdGhhdCBpc24ndCBiYWNrZWQgYnkgZml4 ZWQgKFZSQU0gLyBBR1ApCj4gKyAqIG1lbW9yeS4KPiArICovCj4gK3N0cnVjdCB0dG1fdHQgewo+ ICsJc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXY7Cj4gKwlzdHJ1Y3QgdHRtX2JhY2tlbmRfZnVu YyAqZnVuYzsKPiArCXN0cnVjdCBwYWdlICoqcGFnZXM7Cj4gKwl1aW50MzJfdCBwYWdlX2ZsYWdz Owo+ICsJdW5zaWduZWQgbG9uZyBudW1fcGFnZXM7Cj4gKwlzdHJ1Y3Qgc2dfdGFibGUgKnNnOyAv KiBmb3IgU0cgb2JqZWN0cyB2aWEgZG1hLWJ1ZiAqLwo+ICsJc3RydWN0IGZpbGUgKnN3YXBfc3Rv cmFnZTsKPiArCWVudW0gdHRtX2NhY2hpbmdfc3RhdGUgY2FjaGluZ19zdGF0ZTsKPiArCWVudW0g ewo+ICsJCXR0X2JvdW5kLAo+ICsJCXR0X3VuYm91bmQsCj4gKwkJdHRfdW5wb3B1bGF0ZWQsCj4g Kwl9IHN0YXRlOwo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIHN0cnVjdCB0dG1fZG1hX3R0Cj4gKyAq Cj4gKyAqIEB0dG06IEJhc2UgdHRtX3R0IHN0cnVjdC4KPiArICogQGRtYV9hZGRyZXNzOiBUaGUg RE1BIChidXMpIGFkZHJlc3NlcyBvZiB0aGUgcGFnZXMKPiArICogQHBhZ2VzX2xpc3Q6IHVzZWQg Ynkgc29tZSBwYWdlIGFsbG9jYXRpb24gYmFja2VuZAo+ICsgKgo+ICsgKiBUaGlzIGlzIGEgc3Ry dWN0dXJlIGhvbGRpbmcgdGhlIHBhZ2VzLCBjYWNoaW5nLSBhbmQgYXBlcnR1cmUgYmluZGluZwo+ ICsgKiBzdGF0dXMgZm9yIGEgYnVmZmVyIG9iamVjdCB0aGF0IGlzbid0IGJhY2tlZCBieSBmaXhl ZCAoVlJBTSAvIEFHUCkKPiArICogbWVtb3J5Lgo+ICsgKi8KPiArc3RydWN0IHR0bV9kbWFfdHQg ewo+ICsJc3RydWN0IHR0bV90dCB0dG07Cj4gKwlkbWFfYWRkcl90ICpkbWFfYWRkcmVzczsKPiAr CXN0cnVjdCBsaXN0X2hlYWQgcGFnZXNfbGlzdDsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiB0dG1f dHRfY3JlYXRlCj4gKyAqCj4gKyAqIEBibzogcG9pbnRlciB0byBhIHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdAo+ICsgKiBAemVyb19hbGxvYzogdHJ1ZSBpZiBhbGxvY2F0ZWQgcGFnZXMgbmVlZHMg dG8gYmUgemVyb2VkCj4gKyAqCj4gKyAqIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgVFRNIHN0cnVjdHVy ZSBhbGxvY2F0ZWQgZm9yIHRoZSBnaXZlbiBCTy4KPiArICogTm8gcGFnZXMgYXJlIGFjdHVhbGx5 IGFsbG9jYXRlZC4KPiArICovCj4gK2ludCB0dG1fdHRfY3JlYXRlKHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqYm8sIGJvb2wgemVyb19hbGxvYyk7Cj4gKwo+ICsvKioKPiArICogdHRtX3R0X2lu aXQKPiArICoKPiArICogQHR0bTogVGhlIHN0cnVjdCB0dG1fdHQuCj4gKyAqIEBiZGV2OiBwb2lu dGVyIHRvIGEgc3RydWN0IHR0bV9ib19kZXZpY2U6Cj4gKyAqIEBzaXplOiBTaXplIG9mIHRoZSBk YXRhIG5lZWRlZCBiYWNraW5nLgo+ICsgKiBAcGFnZV9mbGFnczogUGFnZSBmbGFncyBhcyBpZGVu dGlmaWVkIGJ5IFRUTV9QQUdFX0ZMQUdfWFggZmxhZ3MuCj4gKyAqCj4gKyAqIENyZWF0ZSBhIHN0 cnVjdCB0dG1fdHQgdG8gYmFjayBkYXRhIHdpdGggc3lzdGVtIG1lbW9yeSBwYWdlcy4KPiArICog Tm8gcGFnZXMgYXJlIGFjdHVhbGx5IGFsbG9jYXRlZC4KPiArICogUmV0dXJuczoKPiArICogTlVM TDogT3V0IG9mIG1lbW9yeS4KPiArICovCj4gK2ludCB0dG1fdHRfaW5pdChzdHJ1Y3QgdHRtX3R0 ICp0dG0sIHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAo+ICsJCXVuc2lnbmVkIGxvbmcgc2l6 ZSwgdWludDMyX3QgcGFnZV9mbGFncyk7Cj4gK2ludCB0dG1fZG1hX3R0X2luaXQoc3RydWN0IHR0 bV9kbWFfdHQgKnR0bV9kbWEsIHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAo+ICsJCSAgICB1 bnNpZ25lZCBsb25nIHNpemUsIHVpbnQzMl90IHBhZ2VfZmxhZ3MpOwo+ICsKPiArLyoqCj4gKyAq IHR0bV90dF9maW5pCj4gKyAqCj4gKyAqIEB0dG06IHRoZSB0dG1fdHQgc3RydWN0dXJlLgo+ICsg Kgo+ICsgKiBGcmVlIG1lbW9yeSBvZiB0dG1fdHQgc3RydWN0dXJlCj4gKyAqLwo+ICt2b2lkIHR0 bV90dF9maW5pKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4gK3ZvaWQgdHRtX2RtYV90dF9maW5pKHN0 cnVjdCB0dG1fZG1hX3R0ICp0dG1fZG1hKTsKPiArCj4gKy8qKgo+ICsgKiB0dG1fdHRtX2JpbmQ6 Cj4gKyAqCj4gKyAqIEB0dG06IFRoZSBzdHJ1Y3QgdHRtX3R0IGNvbnRhaW5pbmcgYmFja2luZyBw YWdlcy4KPiArICogQGJvX21lbTogVGhlIHN0cnVjdCB0dG1fbWVtX3JlZyBpZGVudGlmeWluZyB0 aGUgYmluZGluZyBsb2NhdGlvbi4KPiArICoKPiArICogQmluZCB0aGUgcGFnZXMgb2YgQHR0bSB0 byBhbiBhcGVydHVyZSBsb2NhdGlvbiBpZGVudGlmaWVkIGJ5IEBib19tZW0KPiArICovCj4gK2lu dCB0dG1fdHRfYmluZChzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCB0dG1fbWVtX3JlZyAqYm9f bWVtLAo+ICsJCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4KTsKPiArCj4gKy8qKgo+ICsg KiB0dG1fdHRtX2Rlc3Ryb3k6Cj4gKyAqCj4gKyAqIEB0dG06IFRoZSBzdHJ1Y3QgdHRtX3R0Lgo+ ICsgKgo+ICsgKiBVbmJpbmQsIHVucG9wdWxhdGUgYW5kIGRlc3Ryb3kgY29tbW9uIHN0cnVjdCB0 dG1fdHQuCj4gKyAqLwo+ICt2b2lkIHR0bV90dF9kZXN0cm95KHN0cnVjdCB0dG1fdHQgKnR0bSk7 Cj4gKwo+ICsvKioKPiArICogdHRtX3R0bV91bmJpbmQ6Cj4gKyAqCj4gKyAqIEB0dG06IFRoZSBz dHJ1Y3QgdHRtX3R0Lgo+ICsgKgo+ICsgKiBVbmJpbmQgYSBzdHJ1Y3QgdHRtX3R0Lgo+ICsgKi8K PiArdm9pZCB0dG1fdHRfdW5iaW5kKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4gKwo+ICsvKioKPiAr ICogdHRtX3R0X3N3YXBpbjoKPiArICoKPiArICogQHR0bTogVGhlIHN0cnVjdCB0dG1fdHQuCj4g KyAqCj4gKyAqIFN3YXAgaW4gYSBwcmV2aW91c2x5IHN3YXAgb3V0IHR0bV90dC4KPiArICovCj4g K2ludCB0dG1fdHRfc3dhcGluKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4gKwo+ICsvKioKPiArICog dHRtX3R0X3NldF9wbGFjZW1lbnRfY2FjaGluZzoKPiArICoKPiArICogQHR0bSBBIHN0cnVjdCB0 dG1fdHQgdGhlIGJhY2tpbmcgcGFnZXMgb2Ygd2hpY2ggd2lsbCBjaGFuZ2UgY2FjaGluZyBwb2xp Y3kuCj4gKyAqIEBwbGFjZW1lbnQ6IEZsYWcgaW5kaWNhdGluZyB0aGUgZGVzaXJlZCBjYWNoaW5n IHBvbGljeS4KPiArICoKPiArICogVGhpcyBmdW5jdGlvbiB3aWxsIGNoYW5nZSBjYWNoaW5nIHBv bGljeSBvZiBhbnkgZGVmYXVsdCBrZXJuZWwgbWFwcGluZ3Mgb2YKPiArICogdGhlIHBhZ2VzIGJh Y2tpbmcgQHR0bS4gSWYgY2hhbmdpbmcgZnJvbSBjYWNoZWQgdG8gdW5jYWNoZWQgb3IKPiArICog d3JpdGUtY29tYmluZWQsCj4gKyAqIGFsbCBDUFUgY2FjaGVzIHdpbGwgZmlyc3QgYmUgZmx1c2hl ZCB0byBtYWtlIHN1cmUgdGhlIGRhdGEgb2YgdGhlIHBhZ2VzCj4gKyAqIGhpdCBSQU0uIFRoaXMg ZnVuY3Rpb24gbWF5IGJlIHZlcnkgY29zdGx5IGFzIGl0IGludm9sdmVzIGdsb2JhbCBUTEIKPiAr ICogYW5kIGNhY2hlIGZsdXNoZXMgYW5kIHBvdGVudGlhbCBwYWdlIHNwbGl0dGluZyAvIGNvbWJp bmluZy4KPiArICovCj4gK2ludCB0dG1fdHRfc2V0X3BsYWNlbWVudF9jYWNoaW5nKHN0cnVjdCB0 dG1fdHQgKnR0bSwgdWludDMyX3QgcGxhY2VtZW50KTsKPiAraW50IHR0bV90dF9zd2Fwb3V0KHN0 cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IGZpbGUgKnBlcnNpc3RlbnRfc3dhcF9zdG9yYWdlKTsK PiArCj4gKy8qKgo+ICsgKiB0dG1fdHRfcG9wdWxhdGUgLSBhbGxvY2F0ZSBwYWdlcyBmb3IgYSB0 dG0KPiArICoKPiArICogQHR0bTogUG9pbnRlciB0byB0aGUgdHRtX3R0IHN0cnVjdHVyZQo+ICsg Kgo+ICsgKiBDYWxscyB0aGUgZHJpdmVyIG1ldGhvZCB0byBhbGxvY2F0ZSBwYWdlcyBmb3IgYSB0 dG0KPiArICovCj4gK2ludCB0dG1fdHRfcG9wdWxhdGUoc3RydWN0IHR0bV90dCAqdHRtLCBzdHJ1 Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0eCk7Cj4gKwo+ICsvKioKPiArICogdHRtX3R0X3VucG9w dWxhdGUgLSBmcmVlIHBhZ2VzIGZyb20gYSB0dG0KPiArICoKPiArICogQHR0bTogUG9pbnRlciB0 byB0aGUgdHRtX3R0IHN0cnVjdHVyZQo+ICsgKgo+ICsgKiBDYWxscyB0aGUgZHJpdmVyIG1ldGhv ZCB0byBmcmVlIGFsbCBwYWdlcyBmcm9tIGEgdHRtCj4gKyAqLwo+ICt2b2lkIHR0bV90dF91bnBv cHVsYXRlKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4gKwo+ICsjaWYgSVNfRU5BQkxFRChDT05GSUdf QUdQKQo+ICsjaW5jbHVkZSA8bGludXgvYWdwX2JhY2tlbmQuaD4KPiArCj4gKy8qKgo+ICsgKiB0 dG1fYWdwX3R0X2NyZWF0ZQo+ICsgKgo+ICsgKiBAYmRldjogUG9pbnRlciB0byBhIHN0cnVjdCB0 dG1fYm9fZGV2aWNlLgo+ICsgKiBAYnJpZGdlOiBUaGUgYWdwIGJyaWRnZSB0aGlzIGRldmljZSBp cyBzaXR0aW5nIG9uLgo+ICsgKiBAc2l6ZTogU2l6ZSBvZiB0aGUgZGF0YSBuZWVkZWQgYmFja2lu Zy4KPiArICogQHBhZ2VfZmxhZ3M6IFBhZ2UgZmxhZ3MgYXMgaWRlbnRpZmllZCBieSBUVE1fUEFH RV9GTEFHX1hYIGZsYWdzLgo+ICsgKgo+ICsgKgo+ICsgKiBDcmVhdGUgYSBUVE0gYmFja2VuZCB0 aGF0IHVzZXMgdGhlIGluZGljYXRlZCBBR1AgYnJpZGdlIGFzIGFuIGFwZXJ0dXJlCj4gKyAqIGZv ciBUVCBtZW1vcnkuIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgbGludXggYWdwZ2FydCBpbnRlcmZh Y2UgdG8KPiArICogYmluZCBhbmQgdW5iaW5kIG1lbW9yeSBiYWNraW5nIGEgdHRtX3R0Lgo+ICsg Ki8KPiArc3RydWN0IHR0bV90dCAqdHRtX2FncF90dF9jcmVhdGUoc3RydWN0IHR0bV9ib19kZXZp Y2UgKmJkZXYsCj4gKwkJCQkgc3RydWN0IGFncF9icmlkZ2VfZGF0YSAqYnJpZGdlLAo+ICsJCQkJ IHVuc2lnbmVkIGxvbmcgc2l6ZSwgdWludDMyX3QgcGFnZV9mbGFncyk7Cj4gK2ludCB0dG1fYWdw X3R0X3BvcHVsYXRlKHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4 ICpjdHgpOwo+ICt2b2lkIHR0bV9hZ3BfdHRfdW5wb3B1bGF0ZShzdHJ1Y3QgdHRtX3R0ICp0dG0p Owo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9hbWQtZ2Z4Cg==