From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v2 4/4] drm/i915: Move ioremap_wc tracking onto VMA Date: Mon, 18 Apr 2016 13:03:51 +0100 Message-ID: <5714CD27.3050804@linux.intel.com> References: <1460978042-9953-1-git-send-email-chris@chris-wilson.co.uk> <1460978042-9953-4-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 44DAE6E596 for ; Mon, 18 Apr 2016 12:03:53 +0000 (UTC) In-Reply-To: <1460978042-9953-4-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE4LzA0LzE2IDEyOjE0LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gQnkgdHJhY2tpbmcgdGhl IGlvbWFwcGluZyBvbiB0aGUgVk1BIGl0c2VsZiwgd2UgY2FuIHNoYXJlIHRoYXQgYXJlYQo+IGJl dHdlZW4gbXVsdGlwbGUgdXNlcnMuIEFsc28gYnkgb25seSByZXZva2luZyB0aGUgaW9tYXBwaW5n IHVwb24KPiB1bmJpbmRpbmcgZnJvbSB0aGUgbWFwcGFibGUgcG9ydGlvbiBvZiB0aGUgR0dUVCwg d2UgY2FuIGtlZXAgdGhhdCBpb21hcAo+IGFjcm9zcyBtdWx0aXBsZSBpbnZvY2F0aW9ucyAoZS5n LiBleGVjbGlzdHMgY29udGV4dCBwaW5uaW5nKS4KPgo+IE5vdGUgdGhhdCBieSBtb3ZpbmcgdGhl IGlvdW5ubWFwIHRyYWNraW5nIHRvIHRoZSBWTUEsIHdlIGFjdHVhbGx5IGVuZCB1cAo+IGZpeGlu ZyBhIGxlYWsgb2YgdGhlIGlvbWFwcGluZyBpbiBpbnRlbF9mYmRldi4KPgo+IHYxLjU6IFJlYmFz ZSBwcm9tcHRlZCBieSBUdnJ0a28KPiB2MjogRHJvcCBkZXZfcHJpdiBwYXJhbWV0ZXIsIHdlIGNh biByZWNvdmVyIHRoZSBpOTE1X2dndHQgZnJvbSB0aGUgdm1hLgo+IHYzOiBNb3ZlIGhhbmRsaW5n IG9mIGlvcmVtYXAgc3BhY2UgZXhoYXVzdGlvbiB0byB2bWFwX3B1cmdlIGFuZCBhbHNvCj4gYWxs b3cgdm1hbGxvY3MgdG8gcmVjb3ZlciBvbGQgaW9tYXBzLiBBZGQgVHZydGtvJ3Mga2VybmVsZG9j Lgo+IHY0OiBGaXggYSB1c2UtYWZ0ZXItZnJlZSBpbiBzaHJpbmtlciBhbmQgcmVhcnJhbmdlIGk5 MTVfdm1hX2lvbWFwCj4gdjU6IEJhY2sgdG8gaTkxNV92bV90b19nZ3R0Cj4KPiBTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogVHZydGtv IFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogVHZydGtv IFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4gI3Y0Cj4gQ2M6IEpvb25hcyBMYWh0 aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgfCAgMiArKwo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICB8IDIzICsrKysrKysrKysrKysrKysrKysKPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oICAgICAgfCAzOCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f c2hyaW5rZXIuYyB8IDI4ICsrKysrKysrKysrKysrKysrKy0tLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9mYmRldi5jICAgICAgIHwgMjIgKysrKysrKysrLS0tLS0tLS0tCj4gICA1 IGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKUmV2aWV3 ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRz LAoKVHZydGtvCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDZjZTJjMzFiOWE4MS4u ODJkMGFmM2YxNjkyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTMzNzgsNiAr MzM3OCw4IEBAIHN0YXRpYyBpbnQgX19pOTE1X3ZtYV91bmJpbmQoc3RydWN0IGk5MTVfdm1hICp2 bWEsIGJvb2wgd2FpdCkKPiAgIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9mZW5jZShvYmop Owo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJaTkxNV92bWFfaW91 bm1hcCh2bWEpOwo+ICAgCX0KPgo+ICAgCXRyYWNlX2k5MTVfdm1hX3VuYmluZCh2bWEpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggYjNhZjJlODA4YjQ5Li5jODk0YWY3 ZTBlYTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0zNjM0LDMg KzM2MzQsMjYgQEAgaTkxNV9nZ3R0X3ZpZXdfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+ICAgCQlyZXR1cm4gb2JqLT5iYXNlLnNpemU7Cj4gICAJfQo+ICAgfQo+ICsKPiAr dm9pZCAqaTkxNV92bWFfaW9tYXAoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gK3sKPiArCXZvaWQg KnB0cjsKPiArCj4gKwlpZiAodm1hLT5pb21hcCkKPiArCQlyZXR1cm4gdm1hLT5pb21hcDsKPiAr Cj4gKwlpZiAoV0FSTl9PTighdm1hLT5vYmotPm1hcF9hbmRfZmVuY2VhYmxlKSkKPiArCQlyZXR1 cm4gRVJSX1BUUigtRU5PREVWKTsKPiArCj4gKwlHRU1fQlVHX09OKCF2bWEtPmlzX2dndHQpOwo+ ICsJR0VNX0JVR19PTigodm1hLT5ib3VuZCAmIEdMT0JBTF9CSU5EKSA9PSAwKTsKPiArCj4gKwlw dHIgPSBpb19tYXBwaW5nX21hcF93YyhpOTE1X3ZtX3RvX2dndHQodm1hLT52bSktPm1hcHBhYmxl LAo+ICsJCQkJdm1hLT5ub2RlLnN0YXJ0LAo+ICsJCQkJdm1hLT5ub2RlLnNpemUpOwo+ICsJaWYg KHB0ciA9PSBOVUxMKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCXZtYS0+ aW9tYXAgPSBwdHI7Cj4gKwlyZXR1cm4gcHRyOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmgKPiBpbmRleCBkN2RkM2Q4YTg3NTguLmQ5NTE5MGRkZjJkNiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAgLTM0LDYgKzM0LDggQEAKPiAgICNpZm5kZWYg X19JOTE1X0dFTV9HVFRfSF9fCj4gICAjZGVmaW5lIF9fSTkxNV9HRU1fR1RUX0hfXwo+Cj4gKyNp bmNsdWRlIDxsaW51eC9pby1tYXBwaW5nLmg+Cj4gKwo+ICAgc3RydWN0IGRybV9pOTE1X2ZpbGVf cHJpdmF0ZTsKPgo+ICAgdHlwZWRlZiB1aW50MzJfdCBnZW42X3B0ZV90Owo+IEBAIC0xNzUsNiAr MTc3LDcgQEAgc3RydWN0IGk5MTVfdm1hIHsKPiAgIAlzdHJ1Y3QgZHJtX21tX25vZGUgbm9kZTsK PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAgCXN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtOwo+ICsJdm9pZCAqaW9tYXA7Cj4KPiAgIAkvKiogRmxhZ3MgYW5kIGFk ZHJlc3Mgc3BhY2UgdGhpcyBWTUEgaXMgYm91bmQgdG8gKi8KPiAgICNkZWZpbmUgR0xPQkFMX0JJ TkQJKDE8PDApCj4gQEAgLTU1OSw0ICs1NjIsMzkgQEAgc2l6ZV90Cj4gICBpOTE1X2dndHRfdmll d19zaXplKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCSAgICBjb25zdCBz dHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwo+Cj4gKy8qKgo+ICsgKiBpOTE1X3ZtYV9pb21h cCAtIGNhbGxzIGlvcmVtYXBfd2MgdG8gbWFwIHRoZSBHR1RUIFZNQSB2aWEgdGhlIGFwZXJ0dXJl Cj4gKyAqIEB2bWE6IFZNQSB0byBpb21hcAo+ICsgKgo+ICsgKiBUaGUgcGFzc2VkIGluIFZNQSBo YXMgdG8gYmUgcGlubmVkIGluIHRoZSBnbG9iYWwgR1RUIG1hcHBhYmxlIHJlZ2lvbi4gT3IgaW4K PiArICogb3RoZXIgd29yZHMgY2FsbGVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRo ZSBWTUEgcGlubmVkIGxpZmV0aW1lIGFuZAo+ICsgKiBlbnN1cmluZyBpdCBjb3ZlcnMgdGhlIHVz ZSBvZiB0aGUgcmV0dXJuZWQgbWFwcGluZy4KPiArICoKPiArICogQ2FsbGVycyBtdXN0IGhvbGQg dGhlIHN0cnVjdF9tdXRleC4KPiArICoKPiArICogUmV0dXJucyBhIHZhbGlkIGlvbWFwcGVkIHBv aW50ZXIgb3IgRVJSX1BUUi4KPiArICovCj4gK3ZvaWQgKmk5MTVfdm1hX2lvbWFwKHN0cnVjdCBp OTE1X3ZtYSAqdm1hKTsKPiArCj4gKy8qKgo+ICsgKiBpOTE1X3ZtYV9pb3VubWFwIC0gdW5tYXBz IHRoZSBtYXBwaW5nIHJldHVybmVkIGZyb20gaTkxNV92bWFfaW9tYXAKPiArICogQGRldl9wcml2 OiBpOTE1IHByaXZhdGUgcG9pbnRlcgo+ICsgKiBAdm1hOiBWTUEgdG8gdW5tYXAKPiArICoKPiAr ICogVW5tYXBzIHRoZSBwcmV2aW91c2x5IGlvbWFwcGVkIFZNQSB1c2luZyBpb3VubWFwLgo+ICsg Kgo+ICsgKiBVc2VycyBvZiBpOTE1X3ZtYV9pb21hcCBzaG91bGQgbm90IG1hbnVhbGx5IHVubWFw IGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbgo+ICsgKiBpZiB0aGV5IHdhbnQgdG8gdGFrZSBhZHZh bnRhZ2Ugb2YgdGhlIG1hcHBpbmcgZ2V0dGluZyBjYWNoZWQgaW4gdGhlIFZNQS4KPiArICoKPiAr ICogQ2FsbGVycyBtdXN0IGhvbGQgdGhlIHN0cnVjdF9tdXRleC4KPiArICovCj4gK3N0YXRpYyBp bmxpbmUgdm9pZCBpOTE1X3ZtYV9pb3VubWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICt7Cj4g KwlpZiAodm1hLT5pb21hcCA9PSBOVUxMKQo+ICsJCXJldHVybjsKPiArCj4gKwlpb19tYXBwaW5n X3VubWFwKHZtYS0+aW9tYXApOwo+ICsJdm1hLT5pb21hcCA9IE5VTEw7Cj4gK30KPiArCj4gICAj ZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5r ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPiBpbmRleCBk NDYzODhmMjVlMDQuLjYxNTZlZTk2ZjQyOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fc2hyaW5rZXIuYwo+IEBAIC0zODcsMTcgKzM4NywzMyBAQCBpOTE1X2dlbV9zaHJpbmtl cl92bWFwKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZv aWQgKnB0cgo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gICAJCWNv bnRhaW5lcl9vZihuYiwgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUsIG1tLnZtYXBfbm90aWZpZXIp Owo+ICAgCXN0cnVjdCBzaHJpbmtlcl9sb2NrX3VuaW50ZXJydXB0aWJsZSBzbHU7Cj4gLQl1bnNp Z25lZCBsb25nIGZyZWVkX3BhZ2VzOwo+ICsJc3RydWN0IGk5MTVfdm1hICp2bWEsICpuZXh0Owo+ ICsJdW5zaWduZWQgbG9uZyBmcmVlZF9wYWdlcyA9IDA7Cj4gKwlpbnQgcmV0Owo+Cj4gICAJaWYg KCFpOTE1X2dlbV9zaHJpbmtlcl9sb2NrX3VuaW50ZXJydXB0aWJsZShkZXZfcHJpdiwgJnNsdSwg NTAwMCkpCj4gICAJCXJldHVybiBOT1RJRllfRE9ORTsKPgo+IC0JZnJlZWRfcGFnZXMgPSBpOTE1 X2dlbV9zaHJpbmsoZGV2X3ByaXYsIC0xVUwsCj4gLQkJCQkgICAgICBJOTE1X1NIUklOS19CT1VO RCB8Cj4gLQkJCQkgICAgICBJOTE1X1NIUklOS19VTkJPVU5EIHwKPiAtCQkJCSAgICAgIEk5MTVf U0hSSU5LX0FDVElWRSB8Cj4gLQkJCQkgICAgICBJOTE1X1NIUklOS19WTUFQUyk7Cj4gKwkvKiBG b3JjZSBldmVyeXRoaW5nIG9udG8gdGhlIGluYWN0aXZlIGxpc3RzICovCj4gKwlyZXQgPSBpOTE1 X2dwdV9pZGxlKGRldl9wcml2LT5kZXYpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIG91dDsKPiAr Cj4gKwlmcmVlZF9wYWdlcyArPSBpOTE1X2dlbV9zaHJpbmsoZGV2X3ByaXYsIC0xVUwsCj4gKwkJ CQkgICAgICAgSTkxNV9TSFJJTktfQk9VTkQgfAo+ICsJCQkJICAgICAgIEk5MTVfU0hSSU5LX1VO Qk9VTkQgfAo+ICsJCQkJICAgICAgIEk5MTVfU0hSSU5LX0FDVElWRSB8Cj4gKwkJCQkgICAgICAg STkxNV9TSFJJTktfVk1BUFMpOwo+ICsKPiArCS8qIFdlIGFsc28gd2FudCB0byBjbGVhciBhbnkg Y2FjaGVkIGlvbWFwcyBhcyB0aGV5IHdyYXAgdm1hcCAqLwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKHZtYSwgbmV4dCwKPiArCQkJCSAmZGV2X3ByaXYtPmdndHQuYmFzZS5pbmFjdGl2ZV9s aXN0LCB2bV9saW5rKSB7Cj4gKwkJdW5zaWduZWQgbG9uZyBjb3VudCA9IHZtYS0+bm9kZS5zaXpl ID4+IFBBR0VfU0hJRlQ7Cj4gKwkJaWYgKHZtYS0+aW9tYXAgJiYgaTkxNV92bWFfdW5iaW5kKHZt YSkgPT0gMCkKPiArCQkJZnJlZWRfcGFnZXMgKz0gY291bnQ7Cj4gKwl9Cj4KPiArb3V0Ogo+ICAg CWk5MTVfZ2VtX3Nocmlua2VyX3VubG9ja191bmludGVycnVwdGlibGUoZGV2X3ByaXYsICZzbHUp Owo+Cj4gICAJKih1bnNpZ25lZCBsb25nICopcHRyICs9IGZyZWVkX3BhZ2VzOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZmJkZXYuYwo+IGluZGV4IDc5YWMyMDJmMzg3MC4uM2YzYzk3YTMwNDE4IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gQEAgLTE4Niw5ICsxODYsMTEgQEAg c3RhdGljIGludCBpbnRlbGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAo+ ICAgCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7Cj4gICAJc3RydWN0 IGZiX2luZm8gKmluZm87Cj4gICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4gKwlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ IC0JaW50IHNpemUsIHJldDsKPiAgIAlib29sIHByZWFsbG9jID0gZmFsc2U7Cj4gKwl2b2lkICp2 YWRkcjsKPiArCWludCByZXQ7Cj4KPiAgIAlpZiAoaW50ZWxfZmIgJiYKPiAgIAkgICAgKHNpemVz LT5mYl93aWR0aCA+IGludGVsX2ZiLT5iYXNlLndpZHRoIHx8Cj4gQEAgLTIxNCw3ICsyMTYsNiBA QCBzdGF0aWMgaW50IGludGVsZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIs Cj4gICAJfQo+Cj4gICAJb2JqID0gaW50ZWxfZmItPm9iajsKPiAtCXNpemUgPSBvYmotPmJhc2Uu c2l6ZTsKPgo+ICAgCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPgo+IEBAIC0yNDQs MjIgKzI0NSwyMyBAQCBzdGF0aWMgaW50IGludGVsZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVs cGVyICpoZWxwZXIsCj4gICAJaW5mby0+ZmxhZ3MgPSBGQklORk9fREVGQVVMVCB8IEZCSU5GT19D QU5fRk9SQ0VfT1VUUFVUOwo+ICAgCWluZm8tPmZib3BzID0gJmludGVsZmJfb3BzOwo+Cj4gKwl2 bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dChvYmopOwo+ICsKPiAgIAkvKiBzZXR1cCBhcGVydHVy ZSBiYXNlL3NpemUgZm9yIHZlc2FmYiB0YWtlb3ZlciAqLwo+ICAgCWluZm8tPmFwZXJ0dXJlcy0+ cmFuZ2VzWzBdLmJhc2UgPSBkZXYtPm1vZGVfY29uZmlnLmZiX2Jhc2U7Cj4gICAJaW5mby0+YXBl cnR1cmVzLT5yYW5nZXNbMF0uc2l6ZSA9IGdndHQtPm1hcHBhYmxlX2VuZDsKPgo+IC0JaW5mby0+ Zml4LnNtZW1fc3RhcnQgPSBkZXYtPm1vZGVfY29uZmlnLmZiX2Jhc2UgKyBpOTE1X2dlbV9vYmpf Z2d0dF9vZmZzZXQob2JqKTsKPiAtCWluZm8tPmZpeC5zbWVtX2xlbiA9IHNpemU7Cj4gKwlpbmZv LT5maXguc21lbV9zdGFydCA9IGRldi0+bW9kZV9jb25maWcuZmJfYmFzZSArIHZtYS0+bm9kZS5z dGFydDsKPiArCWluZm8tPmZpeC5zbWVtX2xlbiA9IHZtYS0+bm9kZS5zaXplOwo+Cj4gLQlpbmZv LT5zY3JlZW5fYmFzZSA9Cj4gLQkJaW9yZW1hcF93YyhnZ3R0LT5tYXBwYWJsZV9iYXNlICsgaTkx NV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaiksCj4gLQkJCSAgIHNpemUpOwo+IC0JaWYgKCFpbmZv LT5zY3JlZW5fYmFzZSkgewo+ICsJdmFkZHIgPSBpOTE1X3ZtYV9pb21hcCh2bWEpOwo+ICsJaWYg KElTX0VSUih2YWRkcikpIHsKPiAgIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVtYXAgZnJhbWVi dWZmZXIgaW50byB2aXJ0dWFsIG1lbW9yeVxuIik7Cj4gLQkJcmV0ID0gLUVOT1NQQzsKPiArCQly ZXQgPSBQVFJfRVJSKHZhZGRyKTsKPiAgIAkJZ290byBvdXRfZGVzdHJveV9mYmk7Cj4gICAJfQo+ IC0JaW5mby0+c2NyZWVuX3NpemUgPSBzaXplOwo+ICsJaW5mby0+c2NyZWVuX2Jhc2UgPSB2YWRk cjsKPiArCWluZm8tPnNjcmVlbl9zaXplID0gdm1hLT5ub2RlLnNpemU7Cj4KPiAgIAkvKiBUaGlz IGRyaXZlciBkb2Vzbid0IG5lZWQgYSBWVCBzd2l0Y2ggdG8gcmVzdG9yZSB0aGUgbW9kZSBvbiBy ZXN1bWUgKi8KPiAgIAlpbmZvLT5za2lwX3Z0X3N3aXRjaCA9IHRydWU7Cj4KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==