From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH 61/73] drm/i915: Record allocated vma size Date: Mon, 01 Aug 2016 15:36:27 +0300 Message-ID: <1470054987.4174.14.camel@linux.intel.com> References: <1470042681-25318-1-git-send-email-chris@chris-wilson.co.uk> <1470042681-25318-62-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id F328B6E2FA for ; Mon, 1 Aug 2016 12:36:31 +0000 (UTC) In-Reply-To: <1470042681-25318-62-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 T24gbWEsIDIwMTYtMDgtMDEgYXQgMTA6MTEgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBU cmFja2luZyB0aGUgc2l6ZSBvZiB0aGUgVk1BIGFzIGFsbG9jYXRlZCBhbGxvd3MgdXMgdG8gZHJh bWF0aWNhbGx5Cj4gcmVkdWNlIHRoZSBjb21wbGV4aXR5IG9mIGxhdGVyIGZ1bmN0aW9ucyAobGlr ZSBpbnNlcnRpbmcgdGhlIFZNQSBpbiB0bwo+IHRoZSBkcm1fbW0gcmFuZ2UgbWFuYWdlcikuCj4g CgpJIGFzc3VtZSB0aGlzIG5ldyByZXZpc2lvbiBvbmx5IHJlbW92ZWQgdGhlIGV4dHJhIGh1bmsg b2YgY29kZSwgcmlnaHQ/CgpJZiBzbywKClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpv b25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uY8KgwqDCoMKgwqB8IDEwMyArKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIHzCoMKg NjcgKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oIHzCoMKgwqA1ICstCj4gwqAzIGZpbGVzIGNoYW5nZWQsIDYzIGluc2VydGlvbnMo KyksIDExMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBm MTFiZjZjNGY4NmEuLmQ4OWZiZWU1YzQ4YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ IEBAIC0yOTc2LDUzICsyOTc2LDM2IEBAIGk5MTVfZ2VtX29iamVjdF9pbnNlcnRfaW50b192bShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IMKgCQkJwqDCoMKgwqDCoMKgwqB1NjQg YWxpZ25tZW50LAo+IMKgCQkJwqDCoMKgwqDCoMKgwqB1NjQgZmxhZ3MpCj4gwqB7Cj4gLQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCXU2NCBzdGFydCwgZW5kOwo+IC0J dTMyIHNlYXJjaF9mbGFnLCBhbGxvY19mbGFnOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKPiDCoAlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKPiArCXU2NCBzdGFydCwgZW5kOwo+ICsJdTY0IG1pbl9hbGlnbm1lbnQ7Cj4gwqAJaW50 IHJldDsKPiDCoAo+IC0JaWYgKGk5MTVfaXNfZ2d0dCh2bSkpIHsKPiAtCQl1MzIgZmVuY2Vfc2l6 ZSwgZmVuY2VfYWxpZ25tZW50LCB1bmZlbmNlZF9hbGlnbm1lbnQ7Cj4gLQkJdTY0IHZpZXdfc2l6 ZTsKPiAtCj4gLQkJaWYgKFdBUk5fT04oIWdndHRfdmlldykpCj4gLQkJCXJldHVybiBFUlJfUFRS KC1FSU5WQUwpOwo+IC0KPiAtCQl2aWV3X3NpemUgPSBpOTE1X2dndHRfdmlld19zaXplKG9iaiwg Z2d0dF92aWV3KTsKPiAtCj4gLQkJZmVuY2Vfc2l6ZSA9IGk5MTVfZ2VtX2dldF9nZ3R0X3NpemUo ZGV2X3ByaXYsCj4gLQkJCQkJCcKgwqDCoMKgdmlld19zaXplLAo+IC0JCQkJCQnCoMKgwqDCoG9i ai0+dGlsaW5nX21vZGUpOwo+IC0JCWZlbmNlX2FsaWdubWVudCA9IGk5MTVfZ2VtX2dldF9nZ3R0 X2FsaWdubWVudChkZXZfcHJpdiwKPiAtCQkJCQkJCcKgwqDCoMKgwqDCoHZpZXdfc2l6ZSwKPiAt CQkJCQkJCcKgwqDCoMKgwqDCoG9iai0+dGlsaW5nX21vZGUsCj4gLQkJCQkJCQnCoMKgwqDCoMKg wqB0cnVlKTsKPiAtCQl1bmZlbmNlZF9hbGlnbm1lbnQgPSBpOTE1X2dlbV9nZXRfZ2d0dF9hbGln bm1lbnQoZGV2X3ByaXYsCj4gLQkJCQkJCQkJwqB2aWV3X3NpemUsCj4gLQkJCQkJCQkJwqBvYmot PnRpbGluZ19tb2RlLAo+IC0JCQkJCQkJCcKgZmFsc2UpOwo+IC0JCXNpemUgPSBtYXgoc2l6ZSwg dmlld19zaXplKTsKPiAtCQlpZiAoZmxhZ3MgJiBQSU5fTUFQUEFCTEUpCj4gLQkJCXNpemUgPSBt YXhfdCh1NjQsIHNpemUsIGZlbmNlX3NpemUpOwo+IC0KPiAtCQlpZiAoYWxpZ25tZW50ID09IDAp Cj4gLQkJCWFsaWdubWVudCA9IGZsYWdzICYgUElOX01BUFBBQkxFID8gZmVuY2VfYWxpZ25tZW50 IDoKPiAtCQkJCXVuZmVuY2VkX2FsaWdubWVudDsKPiAtCQlpZiAoZmxhZ3MgJiBQSU5fTUFQUEFC TEUgJiYgYWxpZ25tZW50ICYgKGZlbmNlX2FsaWdubWVudCAtIDEpKSB7Cj4gLQkJCURSTV9ERUJV RygiSW52YWxpZCBvYmplY3QgKHZpZXcgdHlwZT0ldSkgYWxpZ25tZW50IHJlcXVlc3RlZCAlbGx4 XG4iLAo+IC0JCQkJwqDCoGdndHRfdmlldyA/IGdndHRfdmlldy0+dHlwZSA6IDAsCj4gLQkJCQnC oMKgKGxvbmcgbG9uZylhbGlnbm1lbnQpOwo+IC0JCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsK PiAtCQl9Cj4gLQl9IGVsc2Ugewo+IC0JCXNpemUgPSBtYXhfdCh1NjQsIHNpemUsIG9iai0+YmFz ZS5zaXplKTsKPiAtCQlhbGlnbm1lbnQgPSA0MDk2Owo+ICsJdm1hID0gZ2d0dF92aWV3ID8KPiAr CQlpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV9nZ3R0X3ZtYShvYmosIGdndHRfdmlldykg Ogo+ICsJCWk5MTVfZ2VtX29ial9sb29rdXBfb3JfY3JlYXRlX3ZtYShvYmosIHZtKTsKPiArCWlm IChJU19FUlIodm1hKSkKPiArCQlyZXR1cm4gdm1hOwo+ICsKPiArCXNpemUgPSBtYXgoc2l6ZSwg dm1hLT5zaXplKTsKPiArCWlmIChmbGFncyAmIFBJTl9NQVBQQUJMRSkKPiArCQlzaXplID0gaTkx NV9nZW1fZ2V0X2dndHRfc2l6ZShkZXZfcHJpdiwgc2l6ZSwgb2JqLT50aWxpbmdfbW9kZSk7Cj4g Kwo+ICsJbWluX2FsaWdubWVudCA9Cj4gKwkJaTkxNV9nZW1fZ2V0X2dndHRfYWxpZ25tZW50KGRl dl9wcml2LCBzaXplLCBvYmotPnRpbGluZ19tb2RlLAo+ICsJCQkJCcKgwqDCoMKgZmxhZ3MgJiBQ SU5fTUFQUEFCTEUpOwo+ICsJaWYgKGFsaWdubWVudCA9PSAwKQo+ICsJCWFsaWdubWVudCA9IG1p bl9hbGlnbm1lbnQ7Cj4gKwlpZiAoYWxpZ25tZW50ICYgKG1pbl9hbGlnbm1lbnQgLSAxKSkgewo+ ICsJCURSTV9ERUJVRygiSW52YWxpZCBvYmplY3QgYWxpZ25tZW50IHJlcXVlc3RlZCAlbGx1LCBt aW5pbXVtICVsbHVcbiIsCj4gKwkJCcKgwqBhbGlnbm1lbnQsIG1pbl9hbGlnbm1lbnQpOwo+ICsJ CXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+IMKgCX0KPiDCoAo+IMKgCXN0YXJ0ID0gZmxhZ3Mg JiBQSU5fT0ZGU0VUX0JJQVMgPyBmbGFncyAmIFBJTl9PRkZTRVRfTUFTSyA6IDA7Cj4gLQllbmQg PSB2bS0+dG90YWw7Cj4gKwo+ICsJZW5kID0gdm1hLT52bS0+dG90YWw7Cj4gwqAJaWYgKGZsYWdz ICYgUElOX01BUFBBQkxFKQo+IMKgCQllbmQgPSBtaW5fdCh1NjQsIGVuZCwgZGV2X3ByaXYtPmdn dHQubWFwcGFibGVfZW5kKTsKPiDCoAlpZiAoZmxhZ3MgJiBQSU5fWk9ORV80RykKPiBAQCAtMzAz Myw4ICszMDE2LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2luc2VydF9pbnRvX3ZtKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gwqAJwqAqIGF0dGVtcHQgdG8gZmluZCBzcGFjZS4KPiDC oAnCoCovCj4gwqAJaWYgKHNpemUgPiBlbmQpIHsKPiAtCQlEUk1fREVCVUcoIkF0dGVtcHRpbmcg dG8gYmluZCBhbiBvYmplY3QgKHZpZXcgdHlwZT0ldSkgbGFyZ2VyIHRoYW4gdGhlIGFwZXJ0dXJl OiByZXF1ZXN0PSVsbHUgW29iamVjdD0lemRdID4gJXMgYXBlcnR1cmU9JWxsdVxuIiwKPiAtCQkJ wqDCoGdndHRfdmlldyA/IGdndHRfdmlldy0+dHlwZSA6IDAsCj4gKwkJRFJNX0RFQlVHKCJBdHRl bXB0aW5nIHRvIGJpbmQgYW4gb2JqZWN0IGxhcmdlciB0aGFuIHRoZSBhcGVydHVyZTogcmVxdWVz dD0lbGx1IFtvYmplY3Q9JXpkXSA+ICVzIGFwZXJ0dXJlPSVsbHVcbiIsCj4gwqAJCQnCoMKgc2l6 ZSwgb2JqLT5iYXNlLnNpemUsCj4gwqAJCQnCoMKgZmxhZ3MgJiBQSU5fTUFQUEFCTEUgPyAibWFw cGFibGUiIDogInRvdGFsIiwKPiDCoAkJCcKgwqBlbmQpOwo+IEBAIC0zMDQ3LDMxICszMDI5LDI3 IEBAIGk5MTVfZ2VtX29iamVjdF9pbnNlcnRfaW50b192bShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+IMKgCj4gwqAJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwo+IMKg Cj4gLQl2bWEgPSBnZ3R0X3ZpZXcgPyBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV9nZ3R0 X3ZtYShvYmosIGdndHRfdmlldykgOgo+IC0JCQnCoMKgaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9j cmVhdGVfdm1hKG9iaiwgdm0pOwo+IC0KPiAtCWlmIChJU19FUlIodm1hKSkKPiAtCQlnb3RvIGVy cl91bnBpbjsKPiAtCj4gwqAJaWYgKGZsYWdzICYgUElOX09GRlNFVF9GSVhFRCkgewo+IMKgCQl1 aW50NjRfdCBvZmZzZXQgPSBmbGFncyAmIFBJTl9PRkZTRVRfTUFTSzsKPiAtCj4gLQkJaWYgKG9m ZnNldCAmIChhbGlnbm1lbnQgLSAxKSB8fCBvZmZzZXQgKyBzaXplID4gZW5kKSB7Cj4gKwkJaWYg KG9mZnNldCAmIChhbGlnbm1lbnQgLSAxKSB8fCBvZmZzZXQgPiBlbmQgLSBzaXplKSB7Cj4gwqAJ CQlyZXQgPSAtRUlOVkFMOwo+IC0JCQlnb3RvIGVycl92bWE7Cj4gKwkJCWdvdG8gZXJyX3VucGlu Owo+IMKgCQl9Cj4gKwo+IMKgCQl2bWEtPm5vZGUuc3RhcnQgPSBvZmZzZXQ7Cj4gwqAJCXZtYS0+ bm9kZS5zaXplID0gc2l6ZTsKPiDCoAkJdm1hLT5ub2RlLmNvbG9yID0gb2JqLT5jYWNoZV9sZXZl bDsKPiAtCQlyZXQgPSBkcm1fbW1fcmVzZXJ2ZV9ub2RlKCZ2bS0+bW0sICZ2bWEtPm5vZGUpOwo+ ICsJCXJldCA9IGRybV9tbV9yZXNlcnZlX25vZGUoJnZtYS0+dm0tPm1tLCAmdm1hLT5ub2RlKTsK PiDCoAkJaWYgKHJldCkgewo+IMKgCQkJcmV0ID0gaTkxNV9nZW1fZXZpY3RfZm9yX3ZtYSh2bWEp Owo+IMKgCQkJaWYgKHJldCA9PSAwKQo+IC0JCQkJcmV0ID0gZHJtX21tX3Jlc2VydmVfbm9kZSgm dm0tPm1tLCAmdm1hLT5ub2RlKTsKPiArCQkJCXJldCA9IGRybV9tbV9yZXNlcnZlX25vZGUoJnZt YS0+dm0tPm1tLCAmdm1hLT5ub2RlKTsKPiArCQkJaWYgKHJldCkKPiArCQkJCWdvdG8gZXJyX3Vu cGluOwo+IMKgCQl9Cj4gLQkJaWYgKHJldCkKPiAtCQkJZ290byBlcnJfdm1hOwo+IMKgCX0gZWxz ZSB7Cj4gKwkJdTMyIHNlYXJjaF9mbGFnLCBhbGxvY19mbGFnOwo+ICsKPiDCoAkJaWYgKGZsYWdz ICYgUElOX0hJR0gpIHsKPiDCoAkJCXNlYXJjaF9mbGFnID0gRFJNX01NX1NFQVJDSF9CRUxPVzsK PiDCoAkJCWFsbG9jX2ZsYWcgPSBEUk1fTU1fQ1JFQVRFX1RPUDsKPiBAQCAtMzA5MCwzNiArMzA2 OCwzNSBAQCBpOTE1X2dlbV9vYmplY3RfaW5zZXJ0X2ludG9fdm0oc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiDCoAkJCWFsaWdubWVudCA9IDA7Cj4gwqAKPiDCoHNlYXJjaF9mcmVl Ogo+IC0JCXJldCA9IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZV9nZW5lcmljKCZ2bS0+bW0s ICZ2bWEtPm5vZGUsCj4gKwkJcmV0ID0gZHJtX21tX2luc2VydF9ub2RlX2luX3JhbmdlX2dlbmVy aWMoJnZtYS0+dm0tPm1tLAo+ICsJCQkJCQkJwqDCoCZ2bWEtPm5vZGUsCj4gwqAJCQkJCQkJwqDC oHNpemUsIGFsaWdubWVudCwKPiDCoAkJCQkJCQnCoMKgb2JqLT5jYWNoZV9sZXZlbCwKPiDCoAkJ CQkJCQnCoMKgc3RhcnQsIGVuZCwKPiDCoAkJCQkJCQnCoMKgc2VhcmNoX2ZsYWcsCj4gwqAJCQkJ CQkJwqDCoGFsbG9jX2ZsYWcpOwo+IMKgCQlpZiAocmV0KSB7Cj4gLQkJCXJldCA9IGk5MTVfZ2Vt X2V2aWN0X3NvbWV0aGluZyh2bSwgc2l6ZSwgYWxpZ25tZW50LAo+ICsJCQlyZXQgPSBpOTE1X2dl bV9ldmljdF9zb21ldGhpbmcodm1hLT52bSwgc2l6ZSwgYWxpZ25tZW50LAo+IMKgCQkJCQkJwqDC oMKgwqDCoMKgwqBvYmotPmNhY2hlX2xldmVsLAo+IMKgCQkJCQkJwqDCoMKgwqDCoMKgwqBzdGFy dCwgZW5kLAo+IMKgCQkJCQkJwqDCoMKgwqDCoMKgwqBmbGFncyk7Cj4gwqAJCQlpZiAocmV0ID09 IDApCj4gwqAJCQkJZ290byBzZWFyY2hfZnJlZTsKPiDCoAo+IC0JCQlnb3RvIGVycl92bWE7Cj4g KwkJCWdvdG8gZXJyX3VucGluOwo+IMKgCQl9Cj4gwqAJfQo+IMKgCUdFTV9CVUdfT04oIWk5MTVf Z2VtX3ZhbGlkX2d0dF9zcGFjZSh2bWEsIG9iai0+Y2FjaGVfbGV2ZWwpKTsKPiDCoAo+IMKgCWxp c3RfbW92ZV90YWlsKCZvYmotPmdsb2JhbF9saXN0LCAmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3Qp Owo+IC0JbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZtLT5pbmFjdGl2ZV9saXN0KTsK PiArCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZtX2xpbmssICZ2bWEtPnZtLT5pbmFjdGl2ZV9saXN0 KTsKPiDCoAlvYmotPmJpbmRfY291bnQrKzsKPiDCoAo+IMKgCXJldHVybiB2bWE7Cj4gwqAKPiAt ZXJyX3ZtYToKPiAtCXZtYSA9IEVSUl9QVFIocmV0KTsKPiDCoGVycl91bnBpbjoKPiDCoAlpOTE1 X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPiAtCXJldHVybiB2bWE7Cj4gKwlyZXR1cm4g RVJSX1BUUihyZXQpOwo+IMKgfQo+IMKgCj4gwqBib29sCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMKPiBpbmRleCAzMWQxM2FlYTU0NjEuLmFlNjQyNmU4M2VlMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgdm9p ZCBwcGd0dF91bmJpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+IMKgewo+IMKgCXZtYS0+ dm0tPmNsZWFyX3JhbmdlKHZtYS0+dm0sCj4gwqAJCQnCoMKgwqDCoMKgdm1hLT5ub2RlLnN0YXJ0 LAo+IC0JCQnCoMKgwqDCoMKgdm1hLT5vYmotPmJhc2Uuc2l6ZSwKPiArCQkJwqDCoMKgwqDCoHZt YS0+c2l6ZSwKPiDCoAkJCcKgwqDCoMKgwqB0cnVlKTsKPiDCoH0KPiDCoAo+IEBAIC0yNjk3LDI4 ICsyNjk3LDE4IEBAIHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hLAo+IMKgCj4gwqBzdGF0aWMgdm9pZCBnZ3R0X3VuYmluZF92bWEoc3RydWN0IGk5 MTVfdm1hICp2bWEpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdm1hLT52bS0+ ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp Owo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOwo+IC0JY29u c3QgdWludDY0X3Qgc2l6ZSA9IG1pbl90KHVpbnQ2NF90LAo+IC0JCQkJwqDCoMKgwqBvYmotPmJh c2Uuc2l6ZSwKPiAtCQkJCcKgwqDCoMKgdm1hLT5ub2RlLnNpemUpOwo+ICsJc3RydWN0IGk5MTVf aHdfcHBndHQgKmFwcGd0dCA9IHRvX2k5MTUodm1hLT52bS0+ZGV2KS0+bW0uYWxpYXNpbmdfcHBn dHQ7Cj4gKwljb25zdCB1NjQgc2l6ZSA9IG1pbih2bWEtPnNpemUsIHZtYS0+bm9kZS5zaXplKTsK PiDCoAo+IC0JaWYgKHZtYS0+Ym91bmQgJiBHTE9CQUxfQklORCkgewo+ICsJaWYgKHZtYS0+Ym91 bmQgJiBHTE9CQUxfQklORCkKPiDCoAkJdm1hLT52bS0+Y2xlYXJfcmFuZ2Uodm1hLT52bSwKPiAt CQkJCcKgwqDCoMKgwqB2bWEtPm5vZGUuc3RhcnQsCj4gLQkJCQnCoMKgwqDCoMKgc2l6ZSwKPiAr CQkJCcKgwqDCoMKgwqB2bWEtPm5vZGUuc3RhcnQsIHNpemUsCj4gwqAJCQkJwqDCoMKgwqDCoHRy dWUpOwo+IC0JfQo+IC0KPiAtCWlmIChkZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBndHQgJiYgdm1h LT5ib3VuZCAmIExPQ0FMX0JJTkQpIHsKPiAtCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYXBwZ3R0 ID0gZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3BwZ3R0Owo+IMKgCj4gKwlpZiAodm1hLT5ib3VuZCAm IExPQ0FMX0JJTkQgJiYgYXBwZ3R0KQo+IMKgCQlhcHBndHQtPmJhc2UuY2xlYXJfcmFuZ2UoJmFw cGd0dC0+YmFzZSwKPiAtCQkJCQnCoHZtYS0+bm9kZS5zdGFydCwKPiAtCQkJCQnCoHNpemUsCj4g KwkJCQkJwqB2bWEtPm5vZGUuc3RhcnQsIHNpemUsCj4gwqAJCQkJCcKgdHJ1ZSk7Cj4gLQl9Cj4g wqB9Cj4gwqAKPiDCoHZvaWQgaTkxNV9nZW1fZ3R0X2ZpbmlzaF9vYmplY3Qoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKPiBAQCAtMzM2NywxNCArMzM1NywxNCBAQCB2b2lkIGk5MTVf dm1hX2Nsb3NlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+IMKgc3RhdGljIHN0cnVjdCBpOTE1X3Zt YSAqCj4gwqBfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKPiDCoAkJwqDCoMKgwqDCoMKgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4g LQkJwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICpnZ3R0X3ZpZXcpCj4g KwkJwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQo+IMKgewo+ IMKgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+IMKgCWludCBpOwo+IMKgCj4gwqAJR0VNX0JVR19P Tih2bS0+Y2xvc2VkKTsKPiDCoAo+IC0JaWYgKFdBUk5fT04oaTkxNV9pc19nZ3R0KHZtKSAhPSAh IWdndHRfdmlldykpCj4gKwlpZiAoV0FSTl9PTihpOTE1X2lzX2dndHQodm0pICE9ICEhdmlldykp Cj4gwqAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+IMKgCj4gwqAJdm1hID0ga21lbV9jYWNo ZV96YWxsb2ModG9faTkxNShvYmotPmJhc2UuZGV2KS0+dm1hcywgR0ZQX0tFUk5FTCk7Cj4gQEAg LTMzODgsMTIgKzMzNzgsMjIgQEAgX19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4gwqAJbGlzdF9hZGQoJnZtYS0+dm1fbGluaywgJnZtLT51bmJv dW5kX2xpc3QpOwo+IMKgCXZtYS0+dm0gPSB2bTsKPiDCoAl2bWEtPm9iaiA9IG9iajsKPiArCXZt YS0+c2l6ZSA9IG9iai0+YmFzZS5zaXplOwo+IMKgCXZtYS0+aXNfZ2d0dCA9IGk5MTVfaXNfZ2d0 dCh2bSk7Cj4gwqAKPiAtCWlmIChpOTE1X2lzX2dndHQodm0pKQo+IC0JCXZtYS0+Z2d0dF92aWV3 ID0gKmdndHRfdmlldzsKPiAtCWVsc2UKPiArCWlmIChpOTE1X2lzX2dndHQodm0pKSB7Cj4gKwkJ dm1hLT5nZ3R0X3ZpZXcgPSAqdmlldzsKPiArCQlpZiAodmlldy0+dHlwZSA9PSBJOTE1X0dHVFRf VklFV19QQVJUSUFMKSB7Cj4gKwkJCXZtYS0+c2l6ZSA9IHZpZXctPnBhcmFtcy5wYXJ0aWFsLnNp emU7Cj4gKwkJCXZtYS0+c2l6ZSA8PD0gUEFHRV9TSElGVDsKPiArCQl9IGVsc2UgaWYgKHZpZXct PnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfUk9UQVRFRCkgewo+ICsJCQl2bWEtPnNpemUgPQo+ICsJ CQkJaW50ZWxfcm90YXRpb25faW5mb19zaXplKCZ2aWV3LT5wYXJhbXMucm90YXRlZCk7Cj4gKwkJ CXZtYS0+c2l6ZSA8PD0gUEFHRV9TSElGVDsKPiArCQl9Cj4gKwl9IGVsc2Ugewo+IMKgCQlpOTE1 X3BwZ3R0X2dldChpOTE1X3ZtX3RvX3BwZ3R0KHZtKSk7Cj4gKwl9Cj4gwqAKPiDCoAlsaXN0X2Fk ZF90YWlsKCZ2bWEtPm9ial9saW5rLCAmb2JqLT52bWFfbGlzdCk7Cj4gwqAKPiBAQCAtMzY3OCwy OSArMzY3OCw2IEBAIGludCBpOTE1X3ZtYV9iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBlbnVt IGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCj4gwqAJcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiAtLyoqCj4gLSAqIGk5MTVfZ2d0dF92aWV3X3NpemUgLSBHZXQgdGhlIHNpemUgb2YgYSBHR1RU IHZpZXcuCj4gLSAqIEBvYmo6IE9iamVjdCB0aGUgdmlldyBpcyBvZi4KPiAtICogQHZpZXc6IFRo ZSB2aWV3IGluIHF1ZXN0aW9uLgo+IC0gKgo+IC0gKiBAcmV0dXJuIFRoZSBzaXplIG9mIHRoZSBH R1RUIHZpZXcgaW4gYnl0ZXMuCj4gLSAqLwo+IC1zaXplX3QKPiAtaTkxNV9nZ3R0X3ZpZXdfc2l6 ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0JCcKgwqDCoMKgY29uc3Qgc3Ry dWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQo+IC17Cj4gLQlpZiAodmlldy0+dHlwZSA9PSBJOTE1 X0dHVFRfVklFV19OT1JNQUwpIHsKPiAtCQlyZXR1cm4gb2JqLT5iYXNlLnNpemU7Cj4gLQl9IGVs c2UgaWYgKHZpZXctPnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfUk9UQVRFRCkgewo+IC0JCXJldHVy biBpbnRlbF9yb3RhdGlvbl9pbmZvX3NpemUoJnZpZXctPnBhcmFtcy5yb3RhdGVkKSA8PCBQQUdF X1NISUZUOwo+IC0JfSBlbHNlIGlmICh2aWV3LT50eXBlID09IEk5MTVfR0dUVF9WSUVXX1BBUlRJ QUwpIHsKPiAtCQlyZXR1cm4gdmlldy0+cGFyYW1zLnBhcnRpYWwuc2l6ZSA8PCBQQUdFX1NISUZU Owo+IC0JfSBlbHNlIHsKPiAtCQlXQVJOX09OQ0UoMSwgIkdHVFQgdmlldyAldSBub3QgaW1wbGVt ZW50ZWQhXG4iLCB2aWV3LT50eXBlKTsKPiAtCQlyZXR1cm4gb2JqLT5iYXNlLnNpemU7Cj4gLQl9 Cj4gLX0KPiAtCj4gwqB2b2lkIF9faW9tZW0gKmk5MTVfdm1hX3Bpbl9pb21hcChzdHJ1Y3QgaTkx NV92bWEgKnZtYSkKPiDCoHsKPiDCoAl2b2lkIF9faW9tZW0gKnB0cjsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuaAo+IGluZGV4IDJlYmYwN2RlZmE0ZS4uMmRlNmY2MTNhYzFlIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBAQCAtMTgwLDYgKzE4MCw3IEBAIHN0 cnVjdCBpOTE1X3ZtYSB7Cj4gwqAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiDC oAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKPiDCoAl2b2lkIF9faW9tZW0gKmlvbWFw Owo+ICsJdTY0IHNpemU7Cj4gwqAKPiDCoAl1bnNpZ25lZCBpbnQgYWN0aXZlOwo+IMKgCXN0cnVj dCBpOTE1X2dlbV9hY3RpdmUgbGFzdF9yZWFkW0k5MTVfTlVNX0VOR0lORVNdOwo+IEBAIC02MTAs MTAgKzYxMSw2IEBAIGk5MTVfZ2d0dF92aWV3X2VxdWFsKGNvbnN0IHN0cnVjdCBpOTE1X2dndHRf dmlldyAqYSwKPiDCoAlyZXR1cm4gdHJ1ZTsKPiDCoH0KPiDCoAo+IC1zaXplX3QKPiAtaTkxNV9n Z3R0X3ZpZXdfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0JCcKgwqDC oMKgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KTsKPiAtCj4gwqAvKioKPiDCoCAq IGk5MTVfdm1hX3Bpbl9pb21hcCAtIGNhbGxzIGlvcmVtYXBfd2MgdG8gbWFwIHRoZSBHR1RUIFZN QSB2aWEgdGhlIGFwZXJ0dXJlCj4gwqAgKiBAdm1hOiBWTUEgdG8gaW9tYXAKLS0gCkpvb25hcyBM YWh0aW5lbgpPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpJbnRlbCBDb3Jwb3JhdGlvbgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK