From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915: Move ioremap_wc tracking onto VMA Date: Tue, 19 Apr 2016 13:19:43 +0100 Message-ID: <5716225F.6070703@linux.intel.com> References: <5714FCE4.8090803@linux.intel.com> <1461063973-25029-1-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id E58CE6E428 for ; Tue, 19 Apr 2016 12:19:46 +0000 (UTC) In-Reply-To: <1461063973-25029-1-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 Ck9uIDE5LzA0LzE2IDEyOjA2LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gQnkgdHJhY2tpbmcgdGhl IGlvbWFwcGluZyBvbiB0aGUgVk1BIGl0c2VsZiwgd2UgY2FuIHNoYXJlIHRoYXQgYXJlYQo+IGJl dHdlZW4gbXVsdGlwbGUgdXNlcnMuIEFsc28gYnkgb25seSByZXZva2luZyB0aGUgaW9tYXBwaW5n IHVwb24KPiB1bmJpbmRpbmcgZnJvbSB0aGUgbWFwcGFibGUgcG9ydGlvbiBvZiB0aGUgR0dUVCwg d2UgY2FuIGtlZXAgdGhhdCBpb21hcAo+IGFjcm9zcyBtdWx0aXBsZSBpbnZvY2F0aW9ucyAoZS5n LiBleGVjbGlzdHMgY29udGV4dCBwaW5uaW5nKS4KPgo+IE5vdGUgdGhhdCBieSBtb3ZpbmcgdGhl IGlvdW5ubWFwIHRyYWNraW5nIHRvIHRoZSBWTUEsIHdlIGFjdHVhbGx5IGVuZCB1cAo+IGZpeGlu ZyBhIGxlYWsgb2YgdGhlIGlvbWFwcGluZyBpbiBpbnRlbF9mYmRldi4KPgo+IHYxLjU6IFJlYmFz ZSBwcm9tcHRlZCBieSBUdnJ0a28KPiB2MjogRHJvcCBkZXZfcHJpdiBwYXJhbWV0ZXIsIHdlIGNh biByZWNvdmVyIHRoZSBpOTE1X2dndHQgZnJvbSB0aGUgdm1hLgo+IHYzOiBNb3ZlIGhhbmRsaW5n IG9mIGlvcmVtYXAgc3BhY2UgZXhoYXVzdGlvbiB0byB2bWFwX3B1cmdlIGFuZCBhbHNvCj4gYWxs b3cgdm1hbGxvY3MgdG8gcmVjb3ZlciBvbGQgaW9tYXBzLiBBZGQgVHZydGtvJ3Mga2VybmVsZG9j Lgo+IHY0OiBGaXggYSB1c2UtYWZ0ZXItZnJlZSBpbiBzaHJpbmtlciBhbmQgcmVhcnJhbmdlIGk5 MTVfdm1hX2lvbWFwCj4gdjU6IEJhY2sgdG8gaTkxNV92bV90b19nZ3R0Cj4gdjY6IFVzZSBpOTE1 X3ZtYV9waW5faW9tYXAgYW5kIGk5MTVfdm1hX3VucGluX2lvbWFwIHRvIG1hcmsgY3JpdGljYWwK PiBzZWN0aW9ucyBhbmQgZW5zdXJlIHRoZSBWTUEgY2Fubm90IGJlIHJlYXBlZCB3aGlsc3QgbWFw cGVkLgo+IHY3OiBNb3ZlIGk5MTVfdm1hX2lvdW5tYXAgc28gdGhhdCBjb25zdW1lcnMgb2YgdGhl IEFQSSBhcmUgbm90IHRlbXB0ZWQsCj4gYW5kIGFkZCBpb21lbSBhbm5vdGF0aW9ucwo+Cj4gU2ln bmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gUmV2aWV3ZWQtYnk6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ICN2NAo+IENjOiBKb29u YXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgIHwgMTEgKysrKysrKysrKwo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICB8IDI2ICsrKysrKysr KysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0Lmgg ICAgICB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jIHwgMjggKysrKysrKysrKysrKysrKysrKy0t LS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyAgICAgICB8IDIyICsr KysrKysrKysrLS0tLS0tLS0tCj4gICA1IGZpbGVzIGNoYW5nZWQsIDEwNiBpbnNlcnRpb25zKCsp LCAxNiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDZjZTJj MzFiOWE4MS4uOWVmNDczMjllOGFlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAg LTMzNDYsNiArMzM0NiwxNSBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfZmluaXNoX2d0 dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgCQkJCQkgICAgb2xkX3dyaXRl X2RvbWFpbik7Cj4gICB9Cj4KPiArc3RhdGljIHZvaWQgX19pOTE1X3ZtYV9pb3VubWFwKHN0cnVj dCBpOTE1X3ZtYSAqdm1hKQo+ICt7Cj4gKwlpZiAodm1hLT5pb21hcCA9PSBOVUxMKQo+ICsJCXJl dHVybjsKPiArCj4gKwlpb19tYXBwaW5nX3VubWFwKHZtYS0+aW9tYXApOwo+ICsJdm1hLT5pb21h cCA9IE5VTEw7Cj4gK30KPiArCj4gICBzdGF0aWMgaW50IF9faTkxNV92bWFfdW5iaW5kKHN0cnVj dCBpOTE1X3ZtYSAqdm1hLCBib29sIHdhaXQpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOwo+IEBAIC0zMzc4LDYgKzMzODcsOCBAQCBzdGF0aWMg aW50IF9faTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBib29sIHdhaXQpCj4g ICAJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9wdXRfZmVuY2Uob2JqKTsKPiAgIAkJaWYgKHJldCkK PiAgIAkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCV9faTkxNV92bWFfaW91bm1hcCh2bWEpOwo+ICAg CX0KPgo+ICAgCXRyYWNlX2k5MTVfdm1hX3VuYmluZCh2bWEpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jCj4gaW5kZXggYjNhZjJlODA4YjQ5Li45ZDQyOTNmMjQ3ZmMgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0zNjM0LDMgKzM2MzQsMjkgQEAgaTkx NV9nZ3R0X3ZpZXdfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCQly ZXR1cm4gb2JqLT5iYXNlLnNpemU7Cj4gICAJfQo+ICAgfQo+ICsKPiArdm9pZCBfX2lvbWVtICpp OTE1X3ZtYV9waW5faW9tYXAoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gK3sKPiArCXZvaWQgX19p b21lbSAqcHRyOwo+ICsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+dm0tPmRldi0+c3Ry dWN0X211dGV4KTsKPiArCWlmIChXQVJOX09OKCF2bWEtPm9iai0+bWFwX2FuZF9mZW5jZWFibGUp KQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwo+ICsKPiArCUdFTV9CVUdfT04oIXZtYS0+ aXNfZ2d0dCk7Cj4gKwlHRU1fQlVHX09OKCh2bWEtPmJvdW5kICYgR0xPQkFMX0JJTkQpID09IDAp Owo+ICsKPiArCXB0ciA9IHZtYS0+aW9tYXA7Cj4gKwlpZiAocHRyID09IE5VTEwpIHsKPiArCQlw dHIgPSBpb19tYXBwaW5nX21hcF93YyhpOTE1X3ZtX3RvX2dndHQodm1hLT52bSktPm1hcHBhYmxl LAo+ICsJCQkJCXZtYS0+bm9kZS5zdGFydCwKPiArCQkJCQl2bWEtPm5vZGUuc2l6ZSk7Cj4gKwkJ aWYgKHB0ciA9PSBOVUxMKQo+ICsJCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4gKwkJ dm1hLT5pb21hcCA9IHB0cjsKPiArCX0KPiArCj4gKwl2bWEtPnBpbl9jb3VudCsrOwo+ICsJcmV0 dXJuIHB0cjsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggZDdk ZDNkOGE4NzU4Li5iMGFlNjYzMmMwMWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuaAo+IEBAIC0zNCw2ICszNCw4IEBACj4gICAjaWZuZGVmIF9fSTkxNV9HRU1fR1RUX0hfXwo+ ICAgI2RlZmluZSBfX0k5MTVfR0VNX0dUVF9IX18KPgo+ICsjaW5jbHVkZSA8bGludXgvaW8tbWFw cGluZy5oPgo+ICsKPiAgIHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGU7Cj4KPiAgIHR5cGVk ZWYgdWludDMyX3QgZ2VuNl9wdGVfdDsKPiBAQCAtMTc1LDYgKzE3Nyw3IEBAIHN0cnVjdCBpOTE1 X3ZtYSB7Cj4gICAJc3RydWN0IGRybV9tbV9ub2RlIG5vZGU7Cj4gICAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iajsKPiAgIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKPiAr CXZvaWQgX19pb21lbSAqaW9tYXA7Cj4KPiAgIAkvKiogRmxhZ3MgYW5kIGFkZHJlc3Mgc3BhY2Ug dGhpcyBWTUEgaXMgYm91bmQgdG8gKi8KPiAgICNkZWZpbmUgR0xPQkFMX0JJTkQJKDE8PDApCj4g QEAgLTU1OSw0ICs1NjIsMzYgQEAgc2l6ZV90Cj4gICBpOTE1X2dndHRfdmlld19zaXplKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9n Z3R0X3ZpZXcgKnZpZXcpOwo+Cj4gKy8qKgo+ICsgKiBpOTE1X3ZtYV9waW5faW9tYXAgLSBjYWxs cyBpb3JlbWFwX3djIHRvIG1hcCB0aGUgR0dUVCBWTUEgdmlhIHRoZSBhcGVydHVyZQo+ICsgKiBA dm1hOiBWTUEgdG8gaW9tYXAKPiArICoKPiArICogVGhlIHBhc3NlZCBpbiBWTUEgaGFzIHRvIGJl IHBpbm5lZCBpbiB0aGUgZ2xvYmFsIEdUVCBtYXBwYWJsZSByZWdpb24uCj4gKyAqIEFuIGV4dHJh IHBpbm5pbmcgb2YgdGhlIFZNQSBpcyBhY3F1aXJlZCBmb3IgdGhlIHJldHVybiBpb21hcHBpbmcs Cj4gKyAqIHRoZSBjYWxsZXIgbXVzdCBjYWxsIGk5MTVfdm1hX3VucGluX2lvbWFwIHRvIHJlbGlu cXVpc2ggdGhlIHBpbm5pbmcKPiArICogYWZ0ZXIgdGhlIGlvbWFwcGluZyBpcyBubyBsb25nZXIg cmVxdWlyZWQuCj4gKyAqCj4gKyAqIENhbGxlcnMgbXVzdCBob2xkIHRoZSBzdHJ1Y3RfbXV0ZXgu Cj4gKyAqCj4gKyAqIFJldHVybnMgYSB2YWxpZCBpb21hcHBlZCBwb2ludGVyIG9yIEVSUl9QVFIu Cj4gKyAqLwo+ICt2b2lkIF9faW9tZW0gKmk5MTVfdm1hX3Bpbl9pb21hcChzdHJ1Y3QgaTkxNV92 bWEgKnZtYSk7Cj4gKwo+ICsvKioKPiArICogaTkxNV92bWFfdW5waW5faW9tYXAgLSB1bnBpbnMg dGhlIG1hcHBpbmcgcmV0dXJuZWQgZnJvbSBpOTE1X3ZtYV9pb21hcAo+ICsgKiBAdm1hOiBWTUEg dG8gdW5waW4KPiArICoKPiArICogVW5waW5zIHRoZSBwcmV2aW91c2x5IGlvbWFwcGVkIFZNQSBm cm9tIGk5MTVfdm1hX3Bpbl9pb21hcCgpLgo+ICsgKgo+ICsgKiBDYWxsZXJzIG11c3QgaG9sZCB0 aGUgc3RydWN0X211dGV4LiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdmFsaWQgdG8gYmUKPiArICog Y2FsbGVkIG9uIGEgVk1BIHByZXZpb3VzbHkgaW9tYXBwZWQgYnkgdGhlIGNhbGxlciB3aXRoIGk5 MTVfdm1hX3Bpbl9pb21hcCgpLgo+ICsgKi8KPiArc3RhdGljIGlubGluZSB2b2lkIGk5MTVfdm1h X3VucGluX2lvbWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICt7Cj4gKwlsb2NrZGVwX2Fzc2Vy dF9oZWxkKCZ2bWEtPnZtLT5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlHRU1fQlVHX09OKHZtYS0+ cGluX2NvdW50ID09IDApOwo+ICsJR0VNX0JVR19PTih2bWEtPmlvbWFwID09IE5VTEwpOwo+ICsJ dm1hLT5waW5fY291bnQtLTsKPiArfQo+ICsKPiAgICNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwo+IGluZGV4IGQ0NjM4OGYyNWUwNC4uNjE1NmVlOTZmNDI5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCj4gQEAgLTM4 NywxNyArMzg3LDMzIEBAIGk5MTVfZ2VtX3Nocmlua2VyX3ZtYXAoc3RydWN0IG5vdGlmaWVyX2Js b2NrICpuYiwgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyCj4gICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAgIAkJY29udGFpbmVyX29mKG5iLCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSwgbW0udm1hcF9ub3RpZmllcik7Cj4gICAJc3RydWN0IHNocmlua2VyX2xv Y2tfdW5pbnRlcnJ1cHRpYmxlIHNsdTsKPiAtCXVuc2lnbmVkIGxvbmcgZnJlZWRfcGFnZXM7Cj4g KwlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKm5leHQ7Cj4gKwl1bnNpZ25lZCBsb25nIGZyZWVkX3Bh Z2VzID0gMDsKPiArCWludCByZXQ7Cj4KPiAgIAlpZiAoIWk5MTVfZ2VtX3Nocmlua2VyX2xvY2tf dW5pbnRlcnJ1cHRpYmxlKGRldl9wcml2LCAmc2x1LCA1MDAwKSkKPiAgIAkJcmV0dXJuIE5PVElG WV9ET05FOwo+Cj4gLQlmcmVlZF9wYWdlcyA9IGk5MTVfZ2VtX3NocmluayhkZXZfcHJpdiwgLTFV TCwKPiAtCQkJCSAgICAgIEk5MTVfU0hSSU5LX0JPVU5EIHwKPiAtCQkJCSAgICAgIEk5MTVfU0hS SU5LX1VOQk9VTkQgfAo+IC0JCQkJICAgICAgSTkxNV9TSFJJTktfQUNUSVZFIHwKPiAtCQkJCSAg ICAgIEk5MTVfU0hSSU5LX1ZNQVBTKTsKPiArCS8qIEZvcmNlIGV2ZXJ5dGhpbmcgb250byB0aGUg aW5hY3RpdmUgbGlzdHMgKi8KPiArCXJldCA9IGk5MTVfZ3B1X2lkbGUoZGV2X3ByaXYtPmRldik7 Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCWZyZWVkX3BhZ2VzICs9IGk5MTVf Z2VtX3NocmluayhkZXZfcHJpdiwgLTFVTCwKPiArCQkJCSAgICAgICBJOTE1X1NIUklOS19CT1VO RCB8Cj4gKwkJCQkgICAgICAgSTkxNV9TSFJJTktfVU5CT1VORCB8Cj4gKwkJCQkgICAgICAgSTkx NV9TSFJJTktfQUNUSVZFIHwKPiArCQkJCSAgICAgICBJOTE1X1NIUklOS19WTUFQUyk7Cj4gKwo+ ICsJLyogV2UgYWxzbyB3YW50IHRvIGNsZWFyIGFueSBjYWNoZWQgaW9tYXBzIGFzIHRoZXkgd3Jh cCB2bWFwICovCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCBuZXh0LAo+ICsJCQkJ ICZkZXZfcHJpdi0+Z2d0dC5iYXNlLmluYWN0aXZlX2xpc3QsIHZtX2xpbmspIHsKPiArCQl1bnNp Z25lZCBsb25nIGNvdW50ID0gdm1hLT5ub2RlLnNpemUgPj4gUEFHRV9TSElGVDsKPiArCQlpZiAo dm1hLT5pb21hcCAmJiBpOTE1X3ZtYV91bmJpbmQodm1hKSA9PSAwKQo+ICsJCQlmcmVlZF9wYWdl cyArPSBjb3VudDsKPiArCX0KPgo+ICtvdXQ6Cj4gICAJaTkxNV9nZW1fc2hyaW5rZXJfdW5sb2Nr X3VuaW50ZXJydXB0aWJsZShkZXZfcHJpdiwgJnNsdSk7Cj4KPiAgIAkqKHVuc2lnbmVkIGxvbmcg KilwdHIgKz0gZnJlZWRfcGFnZXM7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gaW5k ZXggNzlhYzIwMmYzODcwLi45M2Y1NGExMDA0MmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2ZiZGV2LmMKPiBAQCAtMTg2LDkgKzE4NiwxMSBAQCBzdGF0aWMgaW50IGludGVsZmJfY3JlYXRl KHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCj4gICAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0 dCA9ICZkZXZfcHJpdi0+Z2d0dDsKPiAgIAlzdHJ1Y3QgZmJfaW5mbyAqaW5mbzsKPiAgIAlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKPiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gLQlpbnQgc2l6ZSwgcmV0Owo+ICAgCWJv b2wgcHJlYWxsb2MgPSBmYWxzZTsKPiArCXZvaWQgKnZhZGRyOwo+ICsJaW50IHJldDsKPgo+ICAg CWlmIChpbnRlbF9mYiAmJgo+ICAgCSAgICAoc2l6ZXMtPmZiX3dpZHRoID4gaW50ZWxfZmItPmJh c2Uud2lkdGggfHwKPiBAQCAtMjE0LDcgKzIxNiw2IEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9jcmVh dGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKPiAgIAl9Cj4KPiAgIAlvYmogPSBpbnRl bF9mYi0+b2JqOwo+IC0Jc2l6ZSA9IG9iai0+YmFzZS5zaXplOwo+Cj4gICAJbXV0ZXhfbG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+Cj4gQEAgLTI0NCwyMiArMjQ1LDIzIEBAIHN0YXRpYyBpbnQg aW50ZWxmYl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKPiAgIAlpbmZvLT5m bGFncyA9IEZCSU5GT19ERUZBVUxUIHwgRkJJTkZPX0NBTl9GT1JDRV9PVVRQVVQ7Cj4gICAJaW5m by0+ZmJvcHMgPSAmaW50ZWxmYl9vcHM7Cj4KPiArCXZtYSA9IGk5MTVfZ2VtX29ial90b19nZ3R0 KG9iaik7Cj4gKwo+ICAgCS8qIHNldHVwIGFwZXJ0dXJlIGJhc2Uvc2l6ZSBmb3IgdmVzYWZiIHRh a2VvdmVyICovCj4gICAJaW5mby0+YXBlcnR1cmVzLT5yYW5nZXNbMF0uYmFzZSA9IGRldi0+bW9k ZV9jb25maWcuZmJfYmFzZTsKPiAgIAlpbmZvLT5hcGVydHVyZXMtPnJhbmdlc1swXS5zaXplID0g Z2d0dC0+bWFwcGFibGVfZW5kOwo+Cj4gLQlpbmZvLT5maXguc21lbV9zdGFydCA9IGRldi0+bW9k ZV9jb25maWcuZmJfYmFzZSArIGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopOwo+IC0JaW5m by0+Zml4LnNtZW1fbGVuID0gc2l6ZTsKPiArCWluZm8tPmZpeC5zbWVtX3N0YXJ0ID0gZGV2LT5t b2RlX2NvbmZpZy5mYl9iYXNlICsgdm1hLT5ub2RlLnN0YXJ0Owo+ICsJaW5mby0+Zml4LnNtZW1f bGVuID0gdm1hLT5ub2RlLnNpemU7Cj4KPiAtCWluZm8tPnNjcmVlbl9iYXNlID0KPiAtCQlpb3Jl bWFwX3djKGdndHQtPm1hcHBhYmxlX2Jhc2UgKyBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2Jq KSwKPiAtCQkJICAgc2l6ZSk7Cj4gLQlpZiAoIWluZm8tPnNjcmVlbl9iYXNlKSB7Cj4gKwl2YWRk ciA9IGk5MTVfdm1hX3Bpbl9pb21hcCh2bWEpOwo+ICsJaWYgKElTX0VSUih2YWRkcikpIHsKPiAg IAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVtYXAgZnJhbWVidWZmZXIgaW50byB2aXJ0dWFsIG1l bW9yeVxuIik7Cj4gLQkJcmV0ID0gLUVOT1NQQzsKPiArCQlyZXQgPSBQVFJfRVJSKHZhZGRyKTsK PiAgIAkJZ290byBvdXRfZGVzdHJveV9mYmk7Cj4gICAJfQo+IC0JaW5mby0+c2NyZWVuX3NpemUg PSBzaXplOwo+ICsJaW5mby0+c2NyZWVuX2Jhc2UgPSB2YWRkcjsKPiArCWluZm8tPnNjcmVlbl9z aXplID0gdm1hLT5ub2RlLnNpemU7Cj4KPiAgIAkvKiBUaGlzIGRyaXZlciBkb2Vzbid0IG5lZWQg YSBWVCBzd2l0Y2ggdG8gcmVzdG9yZSB0aGUgbW9kZSBvbiByZXN1bWUgKi8KPiAgIAlpbmZvLT5z a2lwX3Z0X3N3aXRjaCA9IHRydWU7Cj4KClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK