From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 08/38] drm/i915: Record allocated vma size Date: Fri, 3 Jun 2016 17:55:23 +0100 Message-ID: <1464972953-2726-9-git-send-email-chris@chris-wilson.co.uk> References: <1464972953-2726-1-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 mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 531AA6E06A for ; Fri, 3 Jun 2016 16:56:09 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id a136so734991wme.0 for ; Fri, 03 Jun 2016 09:56:09 -0700 (PDT) In-Reply-To: <1464972953-2726-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VHJhY2tpbmcgdGhlIHNpemUgb2YgdGhlIFZNQSBhcyBhbGxvY2F0ZWQgYWxsb3dzIHVzIHRvIGRy YW1hdGljYWxseQpyZWR1Y2UgdGhlIGNvbXBsZXhpdHkgb2YgbGF0ZXIgZnVuY3Rpb25zIChsaWtl IGluc2VydGluZyB0aGUgVk1BIGluIHRvCnRoZSBkcm1fbW0gcmFuZ2UgbWFuYWdlcikuCgpTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICB8ICAxMCArLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgIHwgMTE3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgfCAgNTYgKysr KystLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIHwgICA1 ICstCiA0IGZpbGVzIGNoYW5nZWQsIDcxIGluc2VydGlvbnMoKyksIDExNyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA5NTIwYWRiYTMzZjYuLmZlN2U4N2U4Y2Y5YSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zMTM3LDExICszMTM3LDExIEBAIGludCBpOTE1 X2dlbV9vYmplY3RfYXR0YWNoX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK IGludCBpOTE1X2dlbV9vcGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmls ZSAqZmlsZSk7CiB2b2lkIGk5MTVfZ2VtX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg c3RydWN0IGRybV9maWxlICpmaWxlKTsKIAotdWludDMyX3QKLWk5MTVfZ2VtX2dldF9ndHRfc2l6 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50MzJfdCBzaXplLCBpbnQgdGlsaW5nX21vZGUp OwotdWludDMyX3QKLWk5MTVfZ2VtX2dldF9ndHRfYWxpZ25tZW50KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHVpbnQzMl90IHNpemUsCi0JCQkgICAgaW50IHRpbGluZ19tb2RlLCBib29sIGZlbmNl ZCk7Cit1aW50NjRfdAoraTkxNV9nZW1fZ2V0X2d0dF9zaXplKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVpbnQ2NF90IHNpemUsIGludCB0aWxpbmdfbW9kZSk7Cit1aW50NjRfdAoraTkxNV9nZW1f Z2V0X2d0dF9hbGlnbm1lbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDY0X3Qgc2l6ZSwK KwkJCSAgIGludCB0aWxpbmdfbW9kZSwgYm9vbCBmZW5jZWQpOwogCiBpbnQgaTkxNV9nZW1fb2Jq ZWN0X3NldF9jYWNoZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJ CSAgICBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKaW5kZXggY2Q1NGMyOTA2ODBkLi43MzQwZmM4MzBkOWEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwpAQCAtMTU5MywxMSArMTU5MywxMyBAQCBpOTE1X2dlbV9yZWxlYXNlX2FsbF9tbWFw cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWk5MTVfZ2VtX3JlbGVhc2Vf bW1hcChvYmopOwogfQogCi11aW50MzJfdAotaTkxNV9nZW1fZ2V0X2d0dF9zaXplKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHVpbnQzMl90IHNpemUsIGludCB0aWxpbmdfbW9kZSkKK3VpbnQ2NF90 CitpOTE1X2dlbV9nZXRfZ3R0X3NpemUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDY0X3Qg c2l6ZSwgaW50IHRpbGluZ19tb2RlKQogewogCXVpbnQzMl90IGd0dF9zaXplOwogCisJR0VNX0JV R19PTihzaXplID09IDApOworCiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQgfHwKIAkg ICAgdGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfTk9ORSkKIAkJcmV0dXJuIHNpemU7CkBAIC0x NjIxLDEwICsxNjIzLDEyIEBAIGk5MTVfZ2VtX2dldF9ndHRfc2l6ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1aW50MzJfdCBzaXplLCBpbnQgdGlsaW5nX21vZGUpCiAgKiBSZXR1cm4gdGhlIHJl cXVpcmVkIEdUVCBhbGlnbm1lbnQgZm9yIGFuIG9iamVjdCwgdGFraW5nIGludG8gYWNjb3VudAog ICogcG90ZW50aWFsIGZlbmNlIHJlZ2lzdGVyIG1hcHBpbmcuCiAgKi8KLXVpbnQzMl90Ci1pOTE1 X2dlbV9nZXRfZ3R0X2FsaWdubWVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50MzJfdCBz aXplLAordWludDY0X3QKK2k5MTVfZ2VtX2dldF9ndHRfYWxpZ25tZW50KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHVpbnQ2NF90IHNpemUsCiAJCQkgICBpbnQgdGlsaW5nX21vZGUsIGJvb2wgZmVu Y2VkKQogeworCUdFTV9CVUdfT04oc2l6ZSA9PSAwKTsKKwogCS8qCiAJICogTWluaW11bSBhbGln bm1lbnQgaXMgNGsgKEdUVCBwYWdlIHNpemUpLCBidXQgbWlnaHQgYmUgZ3JlYXRlcgogCSAqIGlm IGEgZmVuY2UgcmVnaXN0ZXIgaXMgbmVlZGVkIGZvciB0aGUgb2JqZWN0LgpAQCAtMjY3OSw1NiAr MjY4Myw0MCBAQCBpOTE1X2dlbV9vYmplY3RfaW5zZXJ0X2ludG9fdm0oc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAkJCSAgICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKmdndHRfdmlldywKIAkJ CSAgICAgICB1aW50NjRfdCBzaXplLAotCQkJICAgICAgIHVuc2lnbmVkIGFsaWdubWVudCwKKwkJ CSAgICAgICB1aW50NjRfdCBhbGlnbm1lbnQsCiAJCQkgICAgICAgdWludDY0X3QgZmxhZ3MpCiB7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXU2NCBzdGFydCwgZW5kOwot CXUzMiBzZWFyY2hfZmxhZywgYWxsb2NfZmxhZzsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwl1 NjQgc3RhcnQsIGVuZDsKKwl1NjQgbWluX2FsaWdubWVudDsKIAlpbnQgcmV0OwogCi0JaWYgKGk5 MTVfaXNfZ2d0dCh2bSkpIHsKLQkJdTMyIGZlbmNlX3NpemUsIGZlbmNlX2FsaWdubWVudCwgdW5m ZW5jZWRfYWxpZ25tZW50OwotCQl1NjQgdmlld19zaXplOwotCi0JCWlmIChXQVJOX09OKCFnZ3R0 X3ZpZXcpKQotCQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Ci0KLQkJdmlld19zaXplID0gaTkx NV9nZ3R0X3ZpZXdfc2l6ZShvYmosIGdndHRfdmlldyk7Ci0KLQkJZmVuY2Vfc2l6ZSA9IGk5MTVf Z2VtX2dldF9ndHRfc2l6ZShkZXYsCi0JCQkJCQkgICB2aWV3X3NpemUsCi0JCQkJCQkgICBvYmot PnRpbGluZ19tb2RlKTsKLQkJZmVuY2VfYWxpZ25tZW50ID0gaTkxNV9nZW1fZ2V0X2d0dF9hbGln bm1lbnQoZGV2LAotCQkJCQkJCSAgICAgdmlld19zaXplLAotCQkJCQkJCSAgICAgb2JqLT50aWxp bmdfbW9kZSwKLQkJCQkJCQkgICAgIHRydWUpOwotCQl1bmZlbmNlZF9hbGlnbm1lbnQgPSBpOTE1 X2dlbV9nZXRfZ3R0X2FsaWdubWVudChkZXYsCi0JCQkJCQkJCXZpZXdfc2l6ZSwKLQkJCQkJCQkJ b2JqLT50aWxpbmdfbW9kZSwKLQkJCQkJCQkJZmFsc2UpOwotCQlzaXplID0gbWF4KHNpemUsIHZp ZXdfc2l6ZSk7Ci0JCWlmIChmbGFncyAmIFBJTl9NQVBQQUJMRSkKLQkJCXNpemUgPSBtYXhfdCh1 NjQsIHNpemUsIGZlbmNlX3NpemUpOwotCi0JCWlmIChhbGlnbm1lbnQgPT0gMCkKLQkJCWFsaWdu bWVudCA9IGZsYWdzICYgUElOX01BUFBBQkxFID8gZmVuY2VfYWxpZ25tZW50IDoKLQkJCQl1bmZl bmNlZF9hbGlnbm1lbnQ7Ci0JCWlmIChmbGFncyAmIFBJTl9NQVBQQUJMRSAmJiBhbGlnbm1lbnQg JiAoZmVuY2VfYWxpZ25tZW50IC0gMSkpIHsKLQkJCURSTV9ERUJVRygiSW52YWxpZCBvYmplY3Qg KHZpZXcgdHlwZT0ldSkgYWxpZ25tZW50IHJlcXVlc3RlZCAldVxuIiwKLQkJCQkgIGdndHRfdmll dyA/IGdndHRfdmlldy0+dHlwZSA6IDAsCi0JCQkJICBhbGlnbm1lbnQpOwotCQkJcmV0dXJuIEVS Ul9QVFIoLUVJTlZBTCk7Ci0JCX0KLQl9IGVsc2UgewotCQlzaXplID0gbWF4X3QodTY0LCBzaXpl LCBvYmotPmJhc2Uuc2l6ZSk7Ci0JCWFsaWdubWVudCA9IDQwOTY7CisJdm1hID0gZ2d0dF92aWV3 ID8KKwkJaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfZ2d0dF92bWEob2JqLCBnZ3R0X3Zp ZXcpIDoKKwkJaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hKG9iaiwgdm0pOworCWlm IChJU19FUlIodm1hKSkKKwkJcmV0dXJuIHZtYTsKKworCXNpemUgPSBtYXgoc2l6ZSwgdm1hLT5z aXplKTsKKwlpZiAoZmxhZ3MgJiBQSU5fTUFQUEFCTEUpCisJCXNpemUgPSBpOTE1X2dlbV9nZXRf Z3R0X3NpemUoZGV2LCBzaXplLCBvYmotPnRpbGluZ19tb2RlKTsKKworCW1pbl9hbGlnbm1lbnQg PQorCQlpOTE1X2dlbV9nZXRfZ3R0X2FsaWdubWVudChkZXYsIHNpemUsIG9iai0+dGlsaW5nX21v ZGUsCisJCQkJCSAgIGZsYWdzICYgUElOX01BUFBBQkxFKTsKKwlpZiAoYWxpZ25tZW50ID09IDAp CisJCWFsaWdubWVudCA9IG1pbl9hbGlnbm1lbnQ7CisJaWYgKGFsaWdubWVudCAmIChtaW5fYWxp Z25tZW50IC0gMSkpIHsKKwkJRFJNX0RFQlVHKCJJbnZhbGlkIG9iamVjdCBhbGlnbm1lbnQgcmVx dWVzdGVkICVsbHUsIG1pbmltdW0gJWxsdVxuIiwKKwkJCSAgYWxpZ25tZW50LCBtaW5fYWxpZ25t ZW50KTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAJfQogCiAJc3RhcnQgPSBmbGFncyAm IFBJTl9PRkZTRVRfQklBUyA/IGZsYWdzICYgUElOX09GRlNFVF9NQVNLIDogMDsKLQllbmQgPSB2 bS0+dG90YWw7CisKKwllbmQgPSB2bWEtPnZtLT50b3RhbDsKIAlpZiAoZmxhZ3MgJiBQSU5fTUFQ UEFCTEUpCiAJCWVuZCA9IG1pbl90KHU2NCwgZW5kLCBkZXZfcHJpdi0+Z2d0dC5tYXBwYWJsZV9l bmQpOwogCWlmIChmbGFncyAmIFBJTl9aT05FXzRHKQpAQCAtMjczOSw4ICsyNzI3LDcgQEAgaTkx NV9nZW1fb2JqZWN0X2luc2VydF9pbnRvX3ZtKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCiAJICogYXR0ZW1wdCB0byBmaW5kIHNwYWNlLgogCSAqLwogCWlmIChzaXplID4gZW5kKSB7 Ci0JCURSTV9ERUJVRygiQXR0ZW1wdGluZyB0byBiaW5kIGFuIG9iamVjdCAodmlldyB0eXBlPSV1 KSBsYXJnZXIgdGhhbiB0aGUgYXBlcnR1cmU6IHJlcXVlc3Q9JWxsdSBbb2JqZWN0PSV6ZF0gPiAl cyBhcGVydHVyZT0lbGx1XG4iLAotCQkJICBnZ3R0X3ZpZXcgPyBnZ3R0X3ZpZXctPnR5cGUgOiAw LAorCQlEUk1fREVCVUcoIkF0dGVtcHRpbmcgdG8gYmluZCBhbiBvYmplY3QgbGFyZ2VyIHRoYW4g dGhlIGFwZXJ0dXJlOiByZXF1ZXN0PSVsbHUgW29iamVjdD0lemRdID4gJXMgYXBlcnR1cmU9JWxs dVxuIiwKIAkJCSAgc2l6ZSwgb2JqLT5iYXNlLnNpemUsCiAJCQkgIGZsYWdzICYgUElOX01BUFBB QkxFID8gIm1hcHBhYmxlIiA6ICJ0b3RhbCIsCiAJCQkgIGVuZCk7CkBAIC0yNzUzLDMxICsyNzQw LDI3IEBAIGk5MTVfZ2VtX29iamVjdF9pbnNlcnRfaW50b192bShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAogCiAJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCi0Jdm1h ID0gZ2d0dF92aWV3ID8gaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfZ2d0dF92bWEob2Jq LCBnZ3R0X3ZpZXcpIDoKLQkJCSAgaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hKG9i aiwgdm0pOwotCi0JaWYgKElTX0VSUih2bWEpKQotCQlnb3RvIGVycl91bnBpbjsKLQogCWlmIChm bGFncyAmIFBJTl9PRkZTRVRfRklYRUQpIHsKIAkJdWludDY0X3Qgb2Zmc2V0ID0gZmxhZ3MgJiBQ SU5fT0ZGU0VUX01BU0s7Ci0KLQkJaWYgKG9mZnNldCAmIChhbGlnbm1lbnQgLSAxKSB8fCBvZmZz ZXQgKyBzaXplID4gZW5kKSB7CisJCWlmIChvZmZzZXQgJiAoYWxpZ25tZW50IC0gMSkgfHwgb2Zm c2V0ID4gZW5kIC0gc2l6ZSkgewogCQkJcmV0ID0gLUVJTlZBTDsKLQkJCWdvdG8gZXJyX3ZtYTsK KwkJCWdvdG8gZXJyX3VucGluOwogCQl9CisKIAkJdm1hLT5ub2RlLnN0YXJ0ID0gb2Zmc2V0Owog CQl2bWEtPm5vZGUuc2l6ZSA9IHNpemU7CiAJCXZtYS0+bm9kZS5jb2xvciA9IG9iai0+Y2FjaGVf bGV2ZWw7Ci0JCXJldCA9IGRybV9tbV9yZXNlcnZlX25vZGUoJnZtLT5tbSwgJnZtYS0+bm9kZSk7 CisJCXJldCA9IGRybV9tbV9yZXNlcnZlX25vZGUoJnZtYS0+dm0tPm1tLCAmdm1hLT5ub2RlKTsK IAkJaWYgKHJldCkgewogCQkJcmV0ID0gaTkxNV9nZW1fZXZpY3RfZm9yX3ZtYSh2bWEpOwogCQkJ aWYgKHJldCA9PSAwKQotCQkJCXJldCA9IGRybV9tbV9yZXNlcnZlX25vZGUoJnZtLT5tbSwgJnZt YS0+bm9kZSk7CisJCQkJcmV0ID0gZHJtX21tX3Jlc2VydmVfbm9kZSgmdm1hLT52bS0+bW0sICZ2 bWEtPm5vZGUpOworCQkJaWYgKHJldCkKKwkJCQlnb3RvIGVycl91bnBpbjsKIAkJfQotCQlpZiAo cmV0KQotCQkJZ290byBlcnJfdm1hOwogCX0gZWxzZSB7CisJCXUzMiBzZWFyY2hfZmxhZywgYWxs b2NfZmxhZzsKKwogCQlpZiAoZmxhZ3MgJiBQSU5fSElHSCkgewogCQkJc2VhcmNoX2ZsYWcgPSBE Uk1fTU1fU0VBUkNIX0JFTE9XOwogCQkJYWxsb2NfZmxhZyA9IERSTV9NTV9DUkVBVEVfVE9QOwpA QCAtMjc4NiwyMiArMjc2OSwyNiBAQCBpOTE1X2dlbV9vYmplY3RfaW5zZXJ0X2ludG9fdm0oc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCWFsbG9jX2ZsYWcgPSBEUk1fTU1fQ1JF QVRFX0RFRkFVTFQ7CiAJCX0KIAorCQlpZiAoYWxpZ25tZW50IDw9IDQwOTYpCisJCQlhbGlnbm1l bnQgPSAwOyAvKiBmb3IgZWZmaWNpZW50IGRybV9tbSBzZWFyY2hpbmcgKi8KKwogc2VhcmNoX2Zy ZWU6Ci0JCXJldCA9IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZV9nZW5lcmljKCZ2bS0+bW0s ICZ2bWEtPm5vZGUsCisJCXJldCA9IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZV9nZW5lcmlj KCZ2bWEtPnZtLT5tbSwKKwkJCQkJCQkgICZ2bWEtPm5vZGUsCiAJCQkJCQkJICBzaXplLCBhbGln bm1lbnQsCiAJCQkJCQkJICBvYmotPmNhY2hlX2xldmVsLAogCQkJCQkJCSAgc3RhcnQsIGVuZCwK IAkJCQkJCQkgIHNlYXJjaF9mbGFnLAogCQkJCQkJCSAgYWxsb2NfZmxhZyk7CiAJCWlmIChyZXQp IHsKLQkJCXJldCA9IGk5MTVfZ2VtX2V2aWN0X3NvbWV0aGluZyh2bSwgc2l6ZSwgYWxpZ25tZW50 LAorCQkJcmV0ID0gaTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nKHZtYS0+dm0sIHNpemUsIGFsaWdu bWVudCwKIAkJCQkJCSAgICAgICBvYmotPmNhY2hlX2xldmVsLAogCQkJCQkJICAgICAgIHN0YXJ0 LCBlbmQsCiAJCQkJCQkgICAgICAgZmxhZ3MpOwogCQkJaWYgKHJldCA9PSAwKQogCQkJCWdvdG8g c2VhcmNoX2ZyZWU7CiAKLQkJCWdvdG8gZXJyX3ZtYTsKKwkJCWdvdG8gZXJyX3VucGluOwogCQl9 CiAJfQogCWlmIChXQVJOX09OKCFpOTE1X2dlbV92YWxpZF9ndHRfc3BhY2Uodm1hLCBvYmotPmNh Y2hlX2xldmVsKSkpIHsKQEAgLTI4MTAsMTggKzI3OTcsMTYgQEAgc2VhcmNoX2ZyZWU6CiAJfQog CiAJbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsICZkZXZfcHJpdi0+bW0uYm91bmRf bGlzdCk7Ci0JbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZtLT5pbmFjdGl2ZV9saXN0 KTsKKwlsaXN0X21vdmVfdGFpbCgmdm1hLT52bV9saW5rLCAmdm1hLT52bS0+aW5hY3RpdmVfbGlz dCk7CiAJb2JqLT5iaW5kX2NvdW50Kys7CiAKIAlyZXR1cm4gdm1hOwogCiBlcnJfcmVtb3ZlX25v ZGU6CiAJZHJtX21tX3JlbW92ZV9ub2RlKCZ2bWEtPm5vZGUpOwotZXJyX3ZtYToKLQl2bWEgPSBF UlJfUFRSKHJldCk7CiBlcnJfdW5waW46CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9i aik7Ci0JcmV0dXJuIHZtYTsKKwlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQogCiBib29sCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IGZiMmRkNjViMTZlNi4uYjc2ODExZDYwZThj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0 YXRpYyB2b2lkIHBwZ3R0X3VuYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7CiAJdm1h LT52bS0+Y2xlYXJfcmFuZ2Uodm1hLT52bSwKIAkJCSAgICAgdm1hLT5ub2RlLnN0YXJ0LAotCQkJ ICAgICB2bWEtPm9iai0+YmFzZS5zaXplLAorCQkJICAgICB2bWEtPnNpemUsCiAJCQkgICAgIHRy dWUpOwogfQogCkBAIC0yNjU1LDI4ICsyNjU1LDE4IEBAIHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0 X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCiBzdGF0aWMgdm9pZCBnZ3R0X3VuYmlu ZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IHZtYS0+dm0tPmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9i ajsKLQljb25zdCB1aW50NjRfdCBzaXplID0gbWluX3QodWludDY0X3QsCi0JCQkJICAgIG9iai0+ YmFzZS5zaXplLAotCQkJCSAgICB2bWEtPm5vZGUuc2l6ZSk7CisJc3RydWN0IGk5MTVfaHdfcHBn dHQgKmFwcGd0dCA9IHRvX2k5MTUodm1hLT52bS0+ZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQ7CisJ Y29uc3QgdWludDY0X3Qgc2l6ZSA9IG1pbih2bWEtPnNpemUsIHZtYS0+bm9kZS5zaXplKTsKIAot CWlmICh2bWEtPmJvdW5kICYgR0xPQkFMX0JJTkQpIHsKKwlpZiAodm1hLT5ib3VuZCAmIEdMT0JB TF9CSU5EKQogCQl2bWEtPnZtLT5jbGVhcl9yYW5nZSh2bWEtPnZtLAotCQkJCSAgICAgdm1hLT5u b2RlLnN0YXJ0LAotCQkJCSAgICAgc2l6ZSwKKwkJCQkgICAgIHZtYS0+bm9kZS5zdGFydCwgc2l6 ZSwKIAkJCQkgICAgIHRydWUpOwotCX0KLQotCWlmIChkZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBn dHQgJiYgdm1hLT5ib3VuZCAmIExPQ0FMX0JJTkQpIHsKLQkJc3RydWN0IGk5MTVfaHdfcHBndHQg KmFwcGd0dCA9IGRldl9wcml2LT5tbS5hbGlhc2luZ19wcGd0dDsKIAorCWlmICh2bWEtPmJvdW5k ICYgTE9DQUxfQklORCAmJiBhcHBndHQpCiAJCWFwcGd0dC0+YmFzZS5jbGVhcl9yYW5nZSgmYXBw Z3R0LT5iYXNlLAotCQkJCQkgdm1hLT5ub2RlLnN0YXJ0LAotCQkJCQkgc2l6ZSwKKwkJCQkJIHZt YS0+bm9kZS5zdGFydCwgc2l6ZSwKIAkJCQkJIHRydWUpOwotCX0KIH0KIAogdm9pZCBpOTE1X2dl bV9ndHRfZmluaXNoX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQpAQCAt MzM0OSwxMSArMzMzOSwxNiBAQCBfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAlsaXN0X2FkZCgmdm1hLT52bV9saW5rLCAmdm0tPnVuYm91bmRf bGlzdCk7CiAJdm1hLT52bSA9IHZtOwogCXZtYS0+b2JqID0gb2JqOworCXZtYS0+c2l6ZSA9IG9i ai0+YmFzZS5zaXplOwogCXZtYS0+aXNfZ2d0dCA9IGk5MTVfaXNfZ2d0dCh2bSk7CiAKLQlpZiAo aTkxNV9pc19nZ3R0KHZtKSkKKwlpZiAoaTkxNV9pc19nZ3R0KHZtKSkgewogCQl2bWEtPmdndHRf dmlldyA9ICpnZ3R0X3ZpZXc7Ci0JZWxzZQorCQlpZiAoZ2d0dF92aWV3LT50eXBlID09IEk5MTVf R0dUVF9WSUVXX1BBUlRJQUwpCisJCQl2bWEtPnNpemUgPSBnZ3R0X3ZpZXctPnBhcmFtcy5wYXJ0 aWFsLnNpemUgPDwgUEFHRV9TSElGVDsKKwkJZWxzZSBpZiAoZ2d0dF92aWV3LT50eXBlID09IEk5 MTVfR0dUVF9WSUVXX1JPVEFURUQpCisJCQl2bWEtPnNpemUgPSBpbnRlbF9yb3RhdGlvbl9pbmZv X3NpemUoJmdndHRfdmlldy0+cGFyYW1zLnJvdGF0ZWQpIDw8IFBBR0VfU0hJRlQ7CisJfSBlbHNl CiAJCWk5MTVfcHBndHRfZ2V0KGk5MTVfdm1fdG9fcHBndHQodm0pKTsKIAogCWxpc3RfYWRkX3Rh aWwoJnZtYS0+b2JqX2xpbmssICZvYmotPnZtYV9saXN0KTsKQEAgLTM2MzksMjkgKzM2MzQsNiBA QCBpbnQgaTkxNV92bWFfYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgZW51bSBpOTE1X2NhY2hl X2xldmVsIGNhY2hlX2xldmVsLAogCXJldHVybiAwOwogfQogCi0vKioKLSAqIGk5MTVfZ2d0dF92 aWV3X3NpemUgLSBHZXQgdGhlIHNpemUgb2YgYSBHR1RUIHZpZXcuCi0gKiBAb2JqOiBPYmplY3Qg dGhlIHZpZXcgaXMgb2YuCi0gKiBAdmlldzogVGhlIHZpZXcgaW4gcXVlc3Rpb24uCi0gKgotICog QHJldHVybiBUaGUgc2l6ZSBvZiB0aGUgR0dUVCB2aWV3IGluIGJ5dGVzLgotICovCi1zaXplX3QK LWk5MTVfZ2d0dF92aWV3X3NpemUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJ ICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKLXsKLQlpZiAodmlldy0+dHlw ZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpIHsKLQkJcmV0dXJuIG9iai0+YmFzZS5zaXplOwot CX0gZWxzZSBpZiAodmlldy0+dHlwZSA9PSBJOTE1X0dHVFRfVklFV19ST1RBVEVEKSB7Ci0JCXJl dHVybiBpbnRlbF9yb3RhdGlvbl9pbmZvX3NpemUoJnZpZXctPnBhcmFtcy5yb3RhdGVkKSA8PCBQ QUdFX1NISUZUOwotCX0gZWxzZSBpZiAodmlldy0+dHlwZSA9PSBJOTE1X0dHVFRfVklFV19QQVJU SUFMKSB7Ci0JCXJldHVybiB2aWV3LT5wYXJhbXMucGFydGlhbC5zaXplIDw8IFBBR0VfU0hJRlQ7 Ci0JfSBlbHNlIHsKLQkJV0FSTl9PTkNFKDEsICJHR1RUIHZpZXcgJXUgbm90IGltcGxlbWVudGVk IVxuIiwgdmlldy0+dHlwZSk7Ci0JCXJldHVybiBvYmotPmJhc2Uuc2l6ZTsKLQl9Ci19Ci0KIHZv aWQgX19pb21lbSAqaTkxNV92bWFfcGluX2lvbWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewog CXZvaWQgX19pb21lbSAqcHRyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAppbmRleCBl NDY1N2JmYWVhOTUuLjJiZDhlYzdlMTk0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmgKQEAgLTE4MCw2ICsxODAsNyBAQCBzdHJ1Y3QgaTkxNV92bWEgewogCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7CiAJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07CiAJdm9p ZCBfX2lvbWVtICppb21hcDsKKwl1NjQgc2l6ZTsKIAogCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUg bGFzdF9yZWFkW0k5MTVfTlVNX0VOR0lORVNdOwogCkBAIC01OTgsMTAgKzU5OSw2IEBAIGk5MTVf Z2d0dF92aWV3X2VxdWFsKGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqYSwKIAlyZXR1cm4g dHJ1ZTsKIH0KIAotc2l6ZV90Ci1pOTE1X2dndHRfdmlld19zaXplKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCi0JCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcp OwotCiAvKioKICAqIGk5MTVfdm1hX3Bpbl9pb21hcCAtIGNhbGxzIGlvcmVtYXBfd2MgdG8gbWFw IHRoZSBHR1RUIFZNQSB2aWEgdGhlIGFwZXJ0dXJlCiAgKiBAdm1hOiBWTUEgdG8gaW9tYXAKLS0g CjIuOC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK