From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: [PATCH v4 2/3] drm/i915: refactor duplicate object vmap functions (reworked) Date: Mon, 22 Feb 2016 15:18:27 +0000 Message-ID: <1456154308-9342-3-git-send-email-david.s.gordon@intel.com> References: <1456154308-9342-1-git-send-email-david.s.gordon@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 945A56E221 for ; Mon, 22 Feb 2016 15:18:41 +0000 (UTC) In-Reply-To: <1456154308-9342-1-git-send-email-david.s.gordon@intel.com> 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 VGhpcyBpcyBlc3NlbnRpYWxseSBDaHJpcyBXaWxzb24ncyBwYXRjaCBvZiBhIHNpbWlsYXIgbmFt ZSwgcmV3b3JrZWQgb24KdG9wIG9mIEFsZXggRGFpJ3MgcmVjZW50IHBhdGNoOgogIGRybS9pOTE1 OiBBZGQgaTkxNV9nZW1fb2JqZWN0X3ZtYXAgdG8gbWFwIEdFTSBvYmplY3QgdG8gdmlydHVhbCBz cGFjZQpDaHJpcycgb3JpZ2luYWwgY29tbWVudGFyeSBzYWlkOgoKICBXZSBub3cgaGF2ZSB0d28g aW1wbGVtZW50YXRpb25zIGZvciB2bWFwcGluZyBhIHdob2xlIG9iamVjdCwgb25lIGZvcgogIGRt YS1idWYgYW5kIG9uZSBmb3IgdGhlIHJpbmdidWZmZXIuIElmIHdlIGNvdXBsZSB0aGUgdm1hcHBp bmcgaW50bwogIHRoZSBvYmotPnBhZ2VzIGxpZmV0aW1lLCB0aGVuIHdlIGNhbiByZXVzZSBhbiBv YmotPnZtYXBwaW5nIGZvciBib3RoCiAgYW5kIGF0IHRoZSBzYW1lIHRpbWUgY291cGxlIGl0IGlu dG8gdGhlIHNocmlua2VyLgoKICB2MjogTWFyayB0aGUgZmFpbGFibGUga21hbGxvYygpIGFzIF9f R0ZQX05PV0FSTiAodnN5cmphbGEpCiAgdjM6IENhbGwgdW5waW5fdm1hcCBmcm9tIHRoZSByaWdo dCBkbWFidWYgdW5tYXBwZXIKClRoaXMgcGF0Y2ggW3Y0XSByZWltcGxlbWVudHMgdGhlIHNhbWUg ZnVuY3Rpb25hbGl0eSwgYnV0IG5vdyBhcyB3cmFwcGVycwpyb3VuZCB0aGUgcmVjZW50bHktaW50 cm9kdWNlZCBpOTE1X2dlbV9vYmplY3Rfdm1hcF9yYW5nZSgpIGZyb20gQWxleCdzCnBhdGNoIG1l bnRpb25lZCBhYm92ZS4KCldpdGggdGhpcyBjaGFuZ2UsIHdlIGhhdmUgb25seSBvbmUgdm1hcCgp IGluIHRoZSB3aG9sZSBkcml2ZXIgOikKClNpZ25lZC1vZmYtYnk6IERhdmUgR29yZG9uIDxkYXZp ZC5zLmdvcmRvbkBpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNv bi5jby51az4KQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgMTEgKysrKystLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgfCAzOSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFi dWYuYyAgfCA0MSArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8IDMyICsrKysrKysrKysrKy0tLS0tLS0tLS0t LS0KIDQgZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggOGNkNDdjNi4uYjIzN2ViZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCkBAIC0yMTY4LDEwICsyMTY4LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgewogCQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOwogCQlpbnQgbGFzdDsKIAl9IGdldF9w YWdlOwotCi0JLyogcHJpbWUgZG1hLWJ1ZiBzdXBwb3J0ICovCi0Jdm9pZCAqZG1hX2J1Zl92bWFw cGluZzsKLQlpbnQgdm1hcHBpbmdfY291bnQ7CisJdm9pZCAqdm1hcHBpbmc7CiAKIAkvKiogQnJl YWRjcnVtYiBvZiBsYXN0IHJlbmRlcmluZyB0byB0aGUgYnVmZmVyLgogCSAqIFRoZXJlIGNhbiBv bmx5IGJlIG9uZSB3cml0ZXIsIGJ1dCB3ZSBhbGxvdyBmb3IgbXVsdGlwbGUgcmVhZGVycy4KQEAg LTI5NzksNiArMjk3NiwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3Vu cGluX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJb2JqLT5wYWdlc19w aW5fY291bnQtLTsKIH0KIAordm9pZCAqX19tdXN0X2NoZWNrIGk5MTVfZ2VtX29iamVjdF9waW5f dm1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKK3N0YXRpYyBpbmxpbmUgdm9p ZCBpOTE1X2dlbV9vYmplY3RfdW5waW5fdm1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQoreworCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOworfQorCiB2b2lkICpf X211c3RfY2hlY2sgaTkxNV9nZW1fb2JqZWN0X3ZtYXBfcmFuZ2Uoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKIAkJCQkJICAgICAgdW5zaWduZWQgaW50IGZpcnN0LAogCQkJCQkgICAg ICB1bnNpZ25lZCBpbnQgbnBhZ2VzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDBkNTcw OWEuLjE0OTQyY2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMjIzNSw2ICsyMjM1LDEx IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9mcmVlX21tYXBfb2Zmc2V0KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJb3BzLT5wdXRfcGFnZXMob2JqKTsKIAlvYmotPnBh Z2VzID0gTlVMTDsKIAorCWlmIChvYmotPnZtYXBwaW5nKSB7CisJCXZ1bm1hcChvYmotPnZtYXBw aW5nKTsKKwkJb2JqLT52bWFwcGluZyA9IE5VTEw7CisJfQorCiAJaTkxNV9nZW1fb2JqZWN0X2lu dmFsaWRhdGUob2JqKTsKIAogCXJldHVybiAwOwpAQCAtMjQ0Nyw2ICsyNDUyLDQwIEBAIHZvaWQg Kmk5MTVfZ2VtX29iamVjdF92bWFwX3JhbmdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCiAJcmV0dXJuIGFkZHI7CiB9CiAKKy8qKgorICogaTkxNV9nZW1fb2JqZWN0X3Bpbl92bWFw IC0gcGluIGEgR0VNIG9iamVjdCBhbmQgbWFwIGl0IGludG8ga2VybmVsIHNwYWNlCisgKiBAb2Jq OiB0aGUgR0VNIG9iamVjdCB0byBiZSBtYXBwZWQKKyAqCisgKiBDb25iaW5lcyB0aGUgZnVuY3Rp b25zIG9mIGdldF9wYWdlcygpLCBwaW5fcGFnZXMoKSBhbmQgdm1hcF9yYW5nZSgpIG9uCisgKiB0 aGUgd2hvbGUgb2JqZWN0LiAgVGhlIGNhbGxlciBzaG91bGQgcmVsZWFzZSB0aGUgbWFwcG9pbmcg YnkgY2FsbGluZworICogaTkxNV9nZW1fb2JqZWN0X3VucGluX3ZtYXAoKSB3aGVuIHRoZSBvYmpl Y3QgaXMgbm8gbG9uZ2VyIHJlcXVpcmVkLgorICogZnVuY3Rpb24uCisgKgorICogUmV0dXJucyBh biBFUlJfUFRSIG9uIGZhaWx1cmUuCisgKi8KK3ZvaWQgKmk5MTVfZ2VtX29iamVjdF9waW5fdm1h cChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCWludCByZXQ7CisKKwlyZXQg PSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7CisJaWYgKHJldCkKKwkJcmV0dXJuIEVS Ul9QVFIocmV0KTsKKworCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKKworCWlmIChv YmotPnZtYXBwaW5nID09IE5VTEwpIHsKKwkJb2JqLT52bWFwcGluZyA9IGk5MTVfZ2VtX29iamVj dF92bWFwX3JhbmdlKG9iaiwgMCwKKwkJCQkJb2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVCk7 CisKKwkJaWYgKG9iai0+dm1hcHBpbmcgPT0gTlVMTCkgeworCQkJaTkxNV9nZW1fb2JqZWN0X3Vu cGluX3BhZ2VzKG9iaik7CisJCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwkJfQorCX0KKwor CXJldHVybiBvYmotPnZtYXBwaW5nOworfQorCiB2b2lkIGk5MTVfdm1hX21vdmVfdG9fYWN0aXZl KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Rt YWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKaW5kZXggYWVl NDE0OS4uYWRjN2I1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKQEAg LTk1LDE0ICs5NSwxMiBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV91bm1hcF9kbWFfYnVmKHN0cnVj dCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQsCiB7CiAJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IGRtYV9idWZfdG9fb2JqKGF0dGFjaG1lbnQtPmRtYWJ1Zik7CiAKLQlt dXRleF9sb2NrKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCiAJZG1hX3VubWFwX3Nn KGF0dGFjaG1lbnQtPmRldiwgc2ctPnNnbCwgc2ctPm5lbnRzLCBkaXIpOwogCXNnX2ZyZWVfdGFi bGUoc2cpOwogCWtmcmVlKHNnKTsKIAorCW11dGV4X2xvY2soJm9iai0+YmFzZS5kZXYtPnN0cnVj dF9tdXRleCk7CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Ci0KIAltdXRleF91 bmxvY2soJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CiB9CiAKQEAgLTExMCw0MSArMTA4 LDE3IEBAIHN0YXRpYyB2b2lkICppOTE1X2dlbV9kbWFidWZfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAq ZG1hX2J1ZikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gZG1hX2J1Zl90 b19vYmooZG1hX2J1Zik7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7 CisJdm9pZCAqYWRkcjsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVy cnVwdGlibGUoZGV2KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCi0JaWYg KG9iai0+ZG1hX2J1Zl92bWFwcGluZykgewotCQlvYmotPnZtYXBwaW5nX2NvdW50Kys7Ci0JCWdv dG8gb3V0X3VubG9jazsKLQl9Ci0KLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9i aik7Ci0JaWYgKHJldCkKLQkJZ290byBlcnI7Ci0KLQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2Vz KG9iaik7Ci0KLQlyZXQgPSAtRU5PTUVNOwotCi0Jb2JqLT5kbWFfYnVmX3ZtYXBwaW5nID0gaTkx NV9nZW1fb2JqZWN0X3ZtYXBfcmFuZ2Uob2JqLCAwLAotCQkJCQkJZG1hX2J1Zi0+c2l6ZSA+PiBQ QUdFX1NISUZUKTsKLQotCWlmICghb2JqLT5kbWFfYnVmX3ZtYXBwaW5nKQotCQlnb3RvIGVycl91 bnBpbjsKLQotCW9iai0+dm1hcHBpbmdfY291bnQgPSAxOwotb3V0X3VubG9jazoKKwlhZGRyID0g aTkxNV9nZW1fb2JqZWN0X3Bpbl92bWFwKG9iaik7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Ci0JcmV0dXJuIG9iai0+ZG1hX2J1Zl92bWFwcGluZzsKIAotZXJyX3VucGluOgot CWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwotZXJyOgotCW11dGV4X3VubG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCXJldHVybiBFUlJfUFRSKHJldCk7CisJcmV0dXJuIGFkZHI7 CiB9CiAKIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2RtYWJ1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYg KmRtYV9idWYsIHZvaWQgKnZhZGRyKQpAQCAtMTUzLDEyICsxMjcsNyBAQCBzdGF0aWMgdm9pZCBp OTE1X2dlbV9kbWFidWZfdnVubWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCB2b2lkICp2YWRk cikKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKIAogCW11dGV4X2xv Y2soJmRldi0+c3RydWN0X211dGV4KTsKLQlpZiAoLS1vYmotPnZtYXBwaW5nX2NvdW50ID09IDAp IHsKLQkJdnVubWFwKG9iai0+ZG1hX2J1Zl92bWFwcGluZyk7Ci0JCW9iai0+ZG1hX2J1Zl92bWFw cGluZyA9IE5VTEw7Ci0KLQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Ci0JfQor CWk5MTVfZ2VtX29iamVjdF91bnBpbl92bWFwKG9iaik7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpp bmRleCA0MzRhNDUyLi40N2YxODZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jCkBAIC0yMDU2LDcgKzIwNTYsNyBAQCBzdGF0aWMgaW50IGluaXRfcGh5c19zdGF0dXNf cGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogdm9pZCBpbnRlbF91bnBpbl9yaW5n YnVmZmVyX29iaihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKIHsKIAlpZiAoSEFT X0xMQyhyaW5nYnVmLT5vYmotPmJhc2UuZGV2KSAmJiAhcmluZ2J1Zi0+b2JqLT5zdG9sZW4pCi0J CXZ1bm1hcChyaW5nYnVmLT52aXJ0dWFsX3N0YXJ0KTsKKwkJaTkxNV9nZW1fb2JqZWN0X3VucGlu X3ZtYXAocmluZ2J1Zi0+b2JqKTsKIAllbHNlCiAJCWlvdW5tYXAocmluZ2J1Zi0+dmlydHVhbF9z dGFydCk7CiAJcmluZ2J1Zi0+dmlydHVhbF9zdGFydCA9IE5VTEw7CkBAIC0yMDc3LDE2ICsyMDc3 LDE0IEBAIGludCBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVyX29iaihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCQkJcmV0dXJuIHJldDsKIAogCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0 X3RvX2NwdV9kb21haW4ob2JqLCB0cnVlKTsKLQkJaWYgKHJldCkgewotCQkJaTkxNV9nZW1fb2Jq ZWN0X2dndHRfdW5waW4ob2JqKTsKLQkJCXJldHVybiByZXQ7Ci0JCX0KKwkJaWYgKHJldCkKKwkJ CWdvdG8gdW5waW47CiAKLQkJcmluZ2J1Zi0+dmlydHVhbF9zdGFydCA9IGk5MTVfZ2VtX29iamVj dF92bWFwX3JhbmdlKG9iaiwgMCwKLQkJCQkJCXJpbmdidWYtPnNpemUgPj4gUEFHRV9TSElGVCk7 Ci0JCWlmIChyaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ID09IE5VTEwpIHsKLQkJCWk5MTVfZ2VtX29i amVjdF9nZ3R0X3VucGluKG9iaik7Ci0JCQlyZXR1cm4gLUVOT01FTTsKKwkJcmluZ2J1Zi0+dmly dHVhbF9zdGFydCA9IGk5MTVfZ2VtX29iamVjdF9waW5fdm1hcChvYmopOworCQlpZiAoSVNfRVJS KHJpbmdidWYtPnZpcnR1YWxfc3RhcnQpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHJpbmdidWYtPnZp cnR1YWxfc3RhcnQpOworCQkJcmluZ2J1Zi0+dmlydHVhbF9zdGFydCA9IE5VTEw7CisJCQlnb3Rv IHVucGluOwogCQl9CiAJfSBlbHNlIHsKIAkJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKG9i aiwgUEFHRV9TSVpFLCBQSU5fTUFQUEFCTEUpOwpAQCAtMjA5NCwxMCArMjA5Miw4IEBAIGludCBp bnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVyX29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CQkJcmV0dXJuIHJldDsKIAogCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21h aW4ob2JqLCB0cnVlKTsKLQkJaWYgKHJldCkgewotCQkJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5w aW4ob2JqKTsKLQkJCXJldHVybiByZXQ7Ci0JCX0KKwkJaWYgKHJldCkKKwkJCWdvdG8gdW5waW47 CiAKIAkJLyogQWNjZXNzIHRocm91Z2ggdGhlIEdUVCByZXF1aXJlcyB0aGUgZGV2aWNlIHRvIGJl IGF3YWtlLiAqLwogCQlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoZGV2X3ByaXYpOwpAQCAtMjEw NSwxNCArMjEwMSwxOCBAQCBpbnQgaW50ZWxfcGluX2FuZF9tYXBfcmluZ2J1ZmZlcl9vYmooc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAkJcmluZ2J1Zi0+dmlydHVhbF9zdGFydCA9IGlvcmVtYXBf d2MoZGV2X3ByaXYtPmd0dC5tYXBwYWJsZV9iYXNlICsKIAkJCQkJCSAgICBpOTE1X2dlbV9vYmpf Z2d0dF9vZmZzZXQob2JqKSwgcmluZ2J1Zi0+c2l6ZSk7CiAJCWlmIChyaW5nYnVmLT52aXJ0dWFs X3N0YXJ0ID09IE5VTEwpIHsKLQkJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKG9iaik7Ci0J CQlyZXR1cm4gLUVJTlZBTDsKKwkJCXJldCA9IC1FTk9NRU07CisJCQlnb3RvIHVucGluOwogCQl9 CiAJfQogCiAJcmluZ2J1Zi0+dm1hID0gaTkxNV9nZW1fb2JqX3RvX2dndHQob2JqKTsKIAogCXJl dHVybiAwOworCit1bnBpbjoKKwlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihvYmopOworCXJl dHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmoo c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCi0tIAoxLjkuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==