From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 14/38] drm/i915: Use a radixtree for random access to the object's backing storage Date: Tue, 20 Sep 2016 09:29:48 +0100 Message-ID: <20160920083012.2754-15-chris@chris-wilson.co.uk> References: <20160920083012.2754-1-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 1CF9A6E67C for ; Tue, 20 Sep 2016 08:30:36 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id l132so2073439wmf.1 for ; Tue, 20 Sep 2016 01:30:35 -0700 (PDT) In-Reply-To: <20160920083012.2754-1-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 Cc: mika.kuoppala@intel.com List-Id: intel-gfx@lists.freedesktop.org QSB3aGlsZSBhZ28gd2Ugc3dpdGNoZWQgZnJvbSBhIGNvbnRpZ3VvdXMgYXJyYXkgb2YgcGFnZXMg aW50byBhbiBzZ2xpc3QsCmZvciB0aGF0IHdhcyBib3RoIG1vcmUgY29udmVuaWVudCBmb3IgbWFw cGluZyB0byBoYXJkd2FyZSBhbmQgYXZvaWRlZAp0aGUgcmVxdWlyZW1lbnQgZm9yIGEgdm1hbGxv YyBhcnJheSBvZiBwYWdlcyBvbiBldmVyeSBvYmplY3QuIEhvd2V2ZXIsCmNlcnRhaW4gR0VNIEFQ SSBjYWxscyAobGlrZSBwd3JpdGUsIHByZWFkIGFzIHdlbGwgYXMgcGVyZm9ybWluZwpyZWxvY2F0 aW9ucykgZG8gZGVzaXJlIGFjY2VzcyB0byBpbmRpdmlkdWFsIHN0cnVjdCBwYWdlcy4gQSBxdWlj ayBoYWNrCndhcyB0byBpbnRyb2R1Y2UgYSBjYWNoZSBvZiB0aGUgbGFzdCBhY2Nlc3Mgc3VjaCB0 aGF0IGZpbmRpbmcgdGhlCmZvbGxvd2luZyBwYWdlIHdhcyBxdWljayAtIHRoaXMgd29ya3Mgc28g bG9uZyBhcyB0aGUgY2FsbGVyIGRlc2lyZWQKc2VxdWVudGlhbCBhY2Nlc3MuIFdhbGtpbmcgYmFj a3dhcmRzLCBvciBtdWx0aXBsZSBjYWxsZXJzLCBzdGlsbCBoaXRzIGEKc2xvdyBsaW5lYXIgc2Vh cmNoIGZvciBlYWNoIHBhZ2UuIE9uZSBzb2x1dGlvbiBpcyB0byBzdG9yZSBlYWNoCnN1Y2Nlc3Nm dWwgbG9va3VwIGluIGEgcmFkaXggdHJlZS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICAgICB8ICA1NyArKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgICAgICAgICB8IDE0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgIHwgICA0ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgfCAgIDQgKy0KIDQgZmlsZXMgY2hhbmdl ZCwgMTU0IGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCmluZGV4IDZlZjIwNjhlZDM5OS4uMzNjZTZkYjg1Y2U0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKQEAgLTIyNjEsOSArMjI2MSwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7 CiAKIAlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzOwogCWludCBwYWdlc19waW5fY291bnQ7Ci0Jc3Ry dWN0IGdldF9wYWdlIHsKLQkJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKLQkJaW50IGxhc3Q7CisJ c3RydWN0IGk5MTVfZ2VtX29iamVjdF9wYWdlX2l0ZXIgeworCQlzdHJ1Y3Qgc2NhdHRlcmxpc3Qg KnNnX3BvczsKKwkJdW5zaWduZWQgbG9uZyBzZ19pZHg7CisKKwkJc3RydWN0IHJhZGl4X3RyZWVf cm9vdCByYWRpeDsKKwkJc3RydWN0IG11dGV4IGxvY2s7CiAJfSBnZXRfcGFnZTsKIAl2b2lkICpt YXBwaW5nOwogCkBAIC0zMTUyLDQ1ICszMTU1LDIxIEBAIHN0YXRpYyBpbmxpbmUgaW50IF9fc2df cGFnZV9jb3VudChzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnKQogCXJldHVybiBzZy0+bGVuZ3RoID4+ IFBBR0VfU0hJRlQ7CiB9CiAKLXN0cnVjdCBwYWdlICoKLWk5MTVfZ2VtX29iamVjdF9nZXRfZGly dHlfcGFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQgbik7Ci0KLXN0YXRp YyBpbmxpbmUgZG1hX2FkZHJfdAotaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVzcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQgbikKLXsKLQlpZiAobiA8IG9iai0+Z2V0 X3BhZ2UubGFzdCkgewotCQlvYmotPmdldF9wYWdlLnNnID0gb2JqLT5wYWdlcy0+c2dsOwotCQlv YmotPmdldF9wYWdlLmxhc3QgPSAwOwotCX0KLQotCXdoaWxlIChvYmotPmdldF9wYWdlLmxhc3Qg KyBfX3NnX3BhZ2VfY291bnQob2JqLT5nZXRfcGFnZS5zZykgPD0gbikgewotCQlvYmotPmdldF9w YWdlLmxhc3QgKz0gX19zZ19wYWdlX2NvdW50KG9iai0+Z2V0X3BhZ2Uuc2crKyk7Ci0JCWlmICh1 bmxpa2VseShzZ19pc19jaGFpbihvYmotPmdldF9wYWdlLnNnKSkpCi0JCQlvYmotPmdldF9wYWdl LnNnID0gc2dfY2hhaW5fcHRyKG9iai0+Z2V0X3BhZ2Uuc2cpOwotCX0KLQotCXJldHVybiBzZ19k bWFfYWRkcmVzcyhvYmotPmdldF9wYWdlLnNnKSArICgobiAtIG9iai0+Z2V0X3BhZ2UubGFzdCkg PDwgUEFHRV9TSElGVCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2UgKgotaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCBu KQotewotCWlmIChXQVJOX09OKG4gPj0gb2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVCkpCi0J CXJldHVybiBOVUxMOworc3RydWN0IHNjYXR0ZXJsaXN0ICoKK2k5MTVfZ2VtX29iamVjdF9nZXRf c2coc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJICAgICAgIHVuc2lnbmVkIGxv bmcgbiwgdW5zaWduZWQgaW50ICpvZmZzZXQpOwogCi0JaWYgKG4gPCBvYmotPmdldF9wYWdlLmxh c3QpIHsKLQkJb2JqLT5nZXRfcGFnZS5zZyA9IG9iai0+cGFnZXMtPnNnbDsKLQkJb2JqLT5nZXRf cGFnZS5sYXN0ID0gMDsKLQl9CitzdHJ1Y3QgcGFnZSAqCitpOTE1X2dlbV9vYmplY3RfZ2V0X3Bh Z2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCSB1bnNpZ25lZCBsb25nIG4p OwogCi0Jd2hpbGUgKG9iai0+Z2V0X3BhZ2UubGFzdCArIF9fc2dfcGFnZV9jb3VudChvYmotPmdl dF9wYWdlLnNnKSA8PSBuKSB7Ci0JCW9iai0+Z2V0X3BhZ2UubGFzdCArPSBfX3NnX3BhZ2VfY291 bnQob2JqLT5nZXRfcGFnZS5zZysrKTsKLQkJaWYgKHVubGlrZWx5KHNnX2lzX2NoYWluKG9iai0+ Z2V0X3BhZ2Uuc2cpKSkKLQkJCW9iai0+Z2V0X3BhZ2Uuc2cgPSBzZ19jaGFpbl9wdHIob2JqLT5n ZXRfcGFnZS5zZyk7Ci0JfQorc3RydWN0IHBhZ2UgKgoraTkxNV9nZW1fb2JqZWN0X2dldF9kaXJ0 eV9wYWdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkgICAgICAgdW5zaWdu ZWQgbG9uZyBuKTsKIAotCXJldHVybiBudGhfcGFnZShzZ19wYWdlKG9iai0+Z2V0X3BhZ2Uuc2cp LCBuIC0gb2JqLT5nZXRfcGFnZS5sYXN0KTsKLX0KK2RtYV9hZGRyX3QKK2k5MTVfZ2VtX29iamVj dF9nZXRfZG1hX2FkZHJlc3Moc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQl1 bnNpZ25lZCBsb25nIG4pOwogCiBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3Bp bl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKaW5kZXggMGQ4YWU2YzU0ZTVhLi4yNTNmOTJiOTU0MDAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwpAQCAtMjI5Miw2ICsyMjkyLDE1IEBAIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFn ZXNfZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJa2ZyZWUob2JqLT5wYWdl cyk7CiB9CiAKK3N0YXRpYyB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3Jlc2V0X3BhZ2VfaXRlcihz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCByYWRpeF90cmVlX2l0 ZXIgaXRlcjsKKwl2b2lkICoqc2xvdDsKKworCXJhZGl4X3RyZWVfZm9yX2VhY2hfc2xvdChzbG90 LCAmb2JqLT5nZXRfcGFnZS5yYWRpeCwgJml0ZXIsIDApCisJCXJhZGl4X3RyZWVfZGVsZXRlKCZv YmotPmdldF9wYWdlLnJhZGl4LCBpdGVyLmluZGV4KTsKK30KKwogaW50CiBpOTE1X2dlbV9vYmpl Y3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CkBAIC0yMzI0 LDYgKzIzMzMsOCBAQCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCiAJCW9iai0+bWFwcGluZyA9IE5VTEw7CiAJfQogCisJX19pOTE1X2dl bV9vYmplY3RfcmVzZXRfcGFnZV9pdGVyKG9iaik7CisKIAlvcHMtPnB1dF9wYWdlcyhvYmopOwog CW9iai0+cGFnZXMgPSBOVUxMOwogCkBAIC0yNDg4LDggKzI0OTksOCBAQCBpOTE1X2dlbV9vYmpl Y3RfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAKIAlsaXN0X2Fk ZF90YWlsKCZvYmotPmdsb2JhbF9saXN0LCAmZGV2X3ByaXYtPm1tLnVuYm91bmRfbGlzdCk7CiAK LQlvYmotPmdldF9wYWdlLnNnID0gb2JqLT5wYWdlcy0+c2dsOwotCW9iai0+Z2V0X3BhZ2UubGFz dCA9IDA7CisJb2JqLT5nZXRfcGFnZS5zZ19wb3MgPSBvYmotPnBhZ2VzLT5zZ2w7CisJb2JqLT5n ZXRfcGFnZS5zZ19pZHggPSAwOwogCiAJcmV0dXJuIDA7CiB9CkBAIC00MjM0LDYgKzQyNDUsOCBA QCB2b2lkIGk5MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCiAKIAlvYmotPmZyb250YnVmZmVyX2dndHRfb3JpZ2luID0gT1JJR0lOX0dUVDsKIAlvYmot Pm1hZHYgPSBJOTE1X01BRFZfV0lMTE5FRUQ7CisJSU5JVF9SQURJWF9UUkVFKCZvYmotPmdldF9w YWdlLnJhZGl4LCBHRlBfS0VSTkVMKTsKKwltdXRleF9pbml0KCZvYmotPmdldF9wYWdlLmxvY2sp OwogCiAJaTkxNV9nZW1faW5mb19hZGRfb2JqKHRvX2k5MTUob2JqLT5iYXNlLmRldiksIG9iai0+ YmFzZS5zaXplKTsKIH0KQEAgLTQ4ODQsMjEgKzQ4OTcsNiBAQCB2b2lkIGk5MTVfZ2VtX3RyYWNr X2ZiKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGQsCiAJfQogfQogCi0vKiBMaWtlIGk5 MTVfZ2VtX29iamVjdF9nZXRfcGFnZSgpLCBidXQgbWFyayB0aGUgcmV0dXJuZWQgcGFnZSBkaXJ0 eSAqLwotc3RydWN0IHBhZ2UgKgotaTkxNV9nZW1fb2JqZWN0X2dldF9kaXJ0eV9wYWdlKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCBuKQotewotCXN0cnVjdCBwYWdlICpwYWdl OwotCi0JLyogT25seSBkZWZhdWx0IG9iamVjdHMgaGF2ZSBwZXItcGFnZSBkaXJ0eSB0cmFja2lu ZyAqLwotCWlmIChXQVJOX09OKCFpOTE1X2dlbV9vYmplY3RfaGFzX3N0cnVjdF9wYWdlKG9iaikp KQotCQlyZXR1cm4gTlVMTDsKLQotCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2Uob2Jq LCBuKTsKLQlzZXRfcGFnZV9kaXJ0eShwYWdlKTsKLQlyZXR1cm4gcGFnZTsKLX0KLQogLyogQWxs b2NhdGUgYSBuZXcgR0VNIG9iamVjdCBhbmQgZmlsbCBpdCB3aXRoIHRoZSBzdXBwbGllZCBkYXRh ICovCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCiBpOTE1X2dlbV9vYmplY3RfY3JlYXRl X2Zyb21fZGF0YShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LApAQCAtNDkzOSwzICs0OTM3LDEyMCBA QCBmYWlsOgogCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKIAlyZXR1cm4gRVJSX1BUUihyZXQp OwogfQorCitzdGF0aWMgc3RydWN0IHNjYXR0ZXJsaXN0ICoKK19faTkxNV9nZW1fb2JqZWN0X2dl dF9zZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJIHVuc2lnbmVkIGxvbmcg biwgdW5zaWduZWQgaW50ICpvZmZzZXQpCit7CisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZyA9IG9i ai0+cGFnZXMtPnNnbDsKKwlpbnQgaWR4ID0gMDsKKworCXdoaWxlIChpZHggKyBfX3NnX3BhZ2Vf Y291bnQoc2cpIDw9IG4pIHsKKwkJaWR4ICs9IF9fc2dfcGFnZV9jb3VudChzZysrKTsKKwkJaWYg KHVubGlrZWx5KHNnX2lzX2NoYWluKHNnKSkpCisJCQlzZyA9IHNnX2NoYWluX3B0cihzZyk7CisJ fQorCisJKm9mZnNldCA9IG4gLSBpZHg7CisJcmV0dXJuIHNnOworfQorCitzdHJ1Y3Qgc2NhdHRl cmxpc3QgKgoraTkxNV9nZW1fb2JqZWN0X2dldF9zZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAorCQkgICAgICAgdW5zaWduZWQgbG9uZyBuLAorCQkgICAgICAgdW5zaWduZWQgaW50 ICpvZmZzZXQpCit7CisJc3RydWN0IGk5MTVfZ2VtX29iamVjdF9wYWdlX2l0ZXIgKml0ZXIgPSAm b2JqLT5nZXRfcGFnZTsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOworCisJR0VNX0JVR19PTihu ID49IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQpOworCUdFTV9CVUdfT04ob2JqLT5wYWdl c19waW5fY291bnQgPT0gMCk7CisKKwlpZiAobiA8IFJFQURfT05DRShpdGVyLT5zZ19pZHgpKQor CQlnb3RvIGxvb2t1cDsKKworCW11dGV4X2xvY2soJml0ZXItPmxvY2spOworCWlmIChuID49IGl0 ZXItPnNnX2lkeCAmJgorCSAgICBuIDwgaXRlci0+c2dfaWR4ICsgX19zZ19wYWdlX2NvdW50KGl0 ZXItPnNnX3BvcykpIHsKKwkJc2cgPSBpdGVyLT5zZ19wb3M7CisJCSpvZmZzZXQgPSBuIC0gaXRl ci0+c2dfaWR4OworCQltdXRleF91bmxvY2soJml0ZXItPmxvY2spOworCQlyZXR1cm4gc2c7CisJ fQorCisJd2hpbGUgKGl0ZXItPnNnX2lkeCA8PSBuKSB7CisJCXVuc2lnbmVkIGxvbmcgZXhjZXB0 aW9uOworCQl1bnNpZ25lZCBpbnQgY291bnQsIGk7CisKKwkJcmFkaXhfdHJlZV9pbnNlcnQoJml0 ZXItPnJhZGl4LAorCQkJCSAgaXRlci0+c2dfaWR4LAorCQkJCSAgaXRlci0+c2dfcG9zKTsKKwor CQlleGNlcHRpb24gPQorCQkJUkFESVhfVFJFRV9FWENFUFRJT05BTF9FTlRSWSB8CisJCQlpdGVy LT5zZ19pZHggPDwgUkFESVhfVFJFRV9FWENFUFRJT05BTF9TSElGVDsKKwkJY291bnQgPSBfX3Nn X3BhZ2VfY291bnQoaXRlci0+c2dfcG9zKTsKKwkJZm9yIChpID0gMTsgaSA8IGNvdW50OyBpKysp CisJCQlyYWRpeF90cmVlX2luc2VydCgmaXRlci0+cmFkaXgsCisJCQkJCSAgaXRlci0+c2dfaWR4 ICsgaSwKKwkJCQkJICAodm9pZCAqKWV4Y2VwdGlvbik7CisKKwkJaXRlci0+c2dfaWR4ICs9IGNv dW50OworCQlpdGVyLT5zZ19wb3MgPSBfX3NnX25leHQoaXRlci0+c2dfcG9zKTsKKwl9CisJbXV0 ZXhfdW5sb2NrKCZpdGVyLT5sb2NrKTsKKworbG9va3VwOgorCXJjdV9yZWFkX2xvY2soKTsKKwlz ZyA9IHJhZGl4X3RyZWVfbG9va3VwKCZpdGVyLT5yYWRpeCwgbik7CisJcmN1X3JlYWRfdW5sb2Nr KCk7CisKKwlpZiAodW5saWtlbHkoIXNnKSkKKwkJcmV0dXJuIF9faTkxNV9nZW1fb2JqZWN0X2dl dF9zZyhvYmosIG4sIG9mZnNldCk7CisKKwkqb2Zmc2V0ID0gMDsKKwlpZiAodW5saWtlbHkocmFk aXhfdHJlZV9leGNlcHRpb24oc2cpKSkgeworCQl1bnNpZ25lZCBsb25nIGJhc2UgPQorCQkJKHVu c2lnbmVkIGxvbmcpc2cgPj4gUkFESVhfVFJFRV9FWENFUFRJT05BTF9TSElGVDsKKwkJc2cgPSBy YWRpeF90cmVlX2xvb2t1cCgmaXRlci0+cmFkaXgsIGJhc2UpOworCQkqb2Zmc2V0ID0gbiAtIGJh c2U7CisJfQorCXJldHVybiBzZzsKK30KKworc3RydWN0IHBhZ2UgKgoraTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGxvbmcg bikKK3sKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOworCXVuc2lnbmVkIGludCBvZmZzZXQ7CisK KwlHRU1fQlVHX09OKCFpOTE1X2dlbV9vYmplY3RfaGFzX3N0cnVjdF9wYWdlKG9iaikpOworCisJ c2cgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3NnKG9iaiwgbiwgJm9mZnNldCk7CisJcmV0dXJuIG50 aF9wYWdlKHNnX3BhZ2Uoc2cpLCBvZmZzZXQpOworfQorCisvKiBMaWtlIGk5MTVfZ2VtX29iamVj dF9nZXRfcGFnZSgpLCBidXQgbWFyayB0aGUgcmV0dXJuZWQgcGFnZSBkaXJ0eSAqLworc3RydWN0 IHBhZ2UgKgoraTkxNV9nZW1fb2JqZWN0X2dldF9kaXJ0eV9wYWdlKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCisJCQkgICAgICAgdW5zaWduZWQgbG9uZyBuKQoreworCXN0cnVjdCBw YWdlICpwYWdlOworCisJcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShvYmosIG4pOwor CWlmICghb2JqLT5kaXJ0eSkKKwkJc2V0X3BhZ2VfZGlydHkocGFnZSk7CisKKwlyZXR1cm4gcGFn ZTsKK30KKworZG1hX2FkZHJfdAoraTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVzcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJCXVuc2lnbmVkIGxvbmcgbikKK3sKKwlz dHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOworCXVuc2lnbmVkIGludCBvZmZzZXQ7CisKKwlzZyA9IGk5 MTVfZ2VtX29iamVjdF9nZXRfc2cob2JqLCBuLCAmb2Zmc2V0KTsKKwlyZXR1cm4gc2dfZG1hX2Fk ZHJlc3Moc2cpICsgKG9mZnNldCA8PCBQQUdFX1NISUZUKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fc3RvbGVuLmMKaW5kZXggNTk5ODllOGVlNWRjLi4yNGJhZDRlNjBlZjAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCkBAIC01OTQsOCArNTk0LDggQEAgX2k5 MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYg KG9iai0+cGFnZXMgPT0gTlVMTCkKIAkJZ290byBjbGVhbnVwOwogCi0Jb2JqLT5nZXRfcGFnZS5z ZyA9IG9iai0+cGFnZXMtPnNnbDsKLQlvYmotPmdldF9wYWdlLmxhc3QgPSAwOworCW9iai0+Z2V0 X3BhZ2Uuc2dfcG9zID0gb2JqLT5wYWdlcy0+c2dsOworCW9iai0+Z2V0X3BhZ2Uuc2dfaWR4ID0g MDsKIAogCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAlvYmotPnN0b2xlbiA9IHN0 b2xlbjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwppbmRleCAxYzg5MWI5 MmFjODAuLmNiOTU3ODlkYTc2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fdXNlcnB0ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJw dHIuYwpAQCAtNTI2LDggKzUyNiw4IEBAIF9faTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXNfd29y a2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqX3dvcmspCiAJCQlpZiAocmV0ID09IDApIHsKIAkJCQls aXN0X2FkZF90YWlsKCZvYmotPmdsb2JhbF9saXN0LAogCQkJCQkgICAgICAmdG9faTkxNShkZXYp LT5tbS51bmJvdW5kX2xpc3QpOwotCQkJCW9iai0+Z2V0X3BhZ2Uuc2cgPSBvYmotPnBhZ2VzLT5z Z2w7Ci0JCQkJb2JqLT5nZXRfcGFnZS5sYXN0ID0gMDsKKwkJCQlvYmotPmdldF9wYWdlLnNnX3Bv cyA9IG9iai0+cGFnZXMtPnNnbDsKKwkJCQlvYmotPmdldF9wYWdlLnNnX2lkeCA9IDA7CiAJCQkJ cGlubmVkID0gMDsKIAkJCX0KIAkJfQotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=