From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DC30DC54FD4 for ; Tue, 24 Mar 2020 20:12:05 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B3820212CC for ; Tue, 24 Mar 2020 20:12:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=shipmail.org header.i=@shipmail.org header.b="QwuNjPm0" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B3820212CC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=shipmail.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 937816E529; Tue, 24 Mar 2020 20:12:04 +0000 (UTC) Received: from ste-pvt-msa2.bahnhof.se (ste-pvt-msa2.bahnhof.se [213.80.101.71]) by gabe.freedesktop.org (Postfix) with ESMTPS id C7C796E0C1 for ; Tue, 24 Mar 2020 20:11:58 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by ste-pvt-msa2.bahnhof.se (Postfix) with ESMTP id 71FB33FA05; Tue, 24 Mar 2020 21:11:57 +0100 (CET) Authentication-Results: ste-pvt-msa2.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b=QwuNjPm0; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Authentication-Results: ste-ftg-msa2.bahnhof.se (amavisd-new); dkim=pass (1024-bit key) header.d=shipmail.org Received: from ste-pvt-msa2.bahnhof.se ([127.0.0.1]) by localhost (ste-ftg-msa2.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3TYpGHG7Uuzt; Tue, 24 Mar 2020 21:11:56 +0100 (CET) Received: from mail1.shipmail.org (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) (Authenticated sender: mb878879) by ste-pvt-msa2.bahnhof.se (Postfix) with ESMTPA id 7D34C3F5ED; Tue, 24 Mar 2020 21:11:56 +0100 (CET) Received: from localhost.localdomain.localdomain (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) by mail1.shipmail.org (Postfix) with ESMTPSA id E0F86360153; Tue, 24 Mar 2020 21:11:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1585080716; bh=jZNQfzsD6JXjZ9tLUdJsD9+S7bjBimMtbZtd2w2Jn3I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QwuNjPm0Q8kgfWJ0ZdiJVaU37AjFNrM6sgv4jK98doCygzJu3SmeFHwPiN3hIbuTk cGrOh+AVKfT3qX5+huA/xkavUkjvaBfKMigsb1vc9emGkErqbEGewnVFIpPF7axd+M CvWHrNBhlpxCoVKDOI3uJM+053E6O3B457AA5XtI= From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m=20=28VMware=29?= To: linux-mm@kvack.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 8/9] drm/vmwgfx: Introduce a huge page aligning TTM range manager Date: Tue, 24 Mar 2020 21:11:22 +0100 Message-Id: <20200324201123.3118-9-thomas_os@shipmail.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200324201123.3118-1-thomas_os@shipmail.org> References: <20200324201123.3118-1-thomas_os@shipmail.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Ralph Campbell , Michal Hocko , pv-drivers@vmware.com, Roland Scheidegger , "Thomas Hellstrom \(VMware\)" , Dan Williams , "Matthew Wilcox \(Oracle\)" , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , linux-graphics-maintainer@vmware.com, Andrew Morton , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Kirill A. Shutemov" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" RnJvbTogIlRob21hcyBIZWxsc3Ryb20gKFZNd2FyZSkiIDx0aG9tYXNfb3NAc2hpcG1haWwub3Jn PgoKVXNpbmcgaHVnZSBwYWdlLXRhYmxlIGVudHJpZXMgcmVxdWlyZXMgdGhhdCB0aGUgcGh5c2lj YWwgYWRkcmVzcyBvZiB0aGUKc3RhcnQgb2YgYSBidWZmZXIgb2JqZWN0IGlzIGh1Z2UgcGFnZSBz aXplIGFsaWduZWQuCk1ha2UgYSBzcGVjaWFsIHZlcnNpb24gb2YgdGhlIFRUTSByYW5nZSBtYW5h Z2VyIHRoYXQgYWNjb21wbGlzaGVzIHRoaXMsCmJ1dCBmYWxscyBiYWNrIHRvIGEgc21hbGxlciBw YWdlIHNpemUgYWxpZ25tZW50IChQVUQtPlBNRCwgUE1ELT5OT1JNQUwpCnRvIGF2b2lkIGV2aWN0 aW9uLgpJZiBvdGhlciBkcml2ZXJzIHdhbnQgdG8gdXNlIGl0IGluIHRoZSBmdXR1cmUsIGl0IGNh biBiZSBtYWRlIGEKVFRNIGdlbmVyaWMgaGVscGVyLiBOb3RlIHRoYXQgZHJpdmVycyBjYW4gZm9y Y2UgZXZpY3Rpb24gZm9yIGEgY2VydGFpbgphbGlnbm1lbnQgYnkgYXNzaWduaW5nIHRoZSBUVE0g R1BVIGFsaWdubWVudCBjb3JyZXNwb25kaW5nbHkuCgpDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBs aW51eC1mb3VuZGF0aW9uLm9yZz4KQ2M6IE1pY2hhbCBIb2NrbyA8bWhvY2tvQHN1c2UuY29tPgpD YzogIk1hdHRoZXcgV2lsY294IChPcmFjbGUpIiA8d2lsbHlAaW5mcmFkZWFkLm9yZz4KQ2M6ICJL aXJpbGwgQS4gU2h1dGVtb3YiIDxraXJpbGwuc2h1dGVtb3ZAbGludXguaW50ZWwuY29tPgpDYzog UmFscGggQ2FtcGJlbGwgPHJjYW1wYmVsbEBudmlkaWEuY29tPgpDYzogIkrDqXLDtG1lIEdsaXNz ZSIgPGpnbGlzc2VAcmVkaGF0LmNvbT4KQ2M6ICJDaHJpc3RpYW4gS8O2bmlnIiA8Y2hyaXN0aWFu LmtvZW5pZ0BhbWQuY29tPgpDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5j b20+ClNpZ25lZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryb20gKFZNd2FyZSkgPHRob21hc19vc0Bz aGlwbWFpbC5vcmc+ClJldmlld2VkLWJ5OiBSb2xhbmQgU2NoZWlkZWdnZXIgPHNyb2xhbmRAdm13 YXJlLmNvbT4KQWNrZWQtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1k LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L01ha2VmaWxlICAgICB8ICAgMSArCiBk cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaCB8ICAgNyArKwogZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfdGhwLmMgfCAxNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogMyBmaWxlcyBjaGFuZ2VkLCAxNzQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3RocC5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvTWFrZWZp bGUKaW5kZXggYzg3N2EyMWEwNzM5Li40MjFkZDJhNDk3YTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS92bXdnZngvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9NYWtl ZmlsZQpAQCAtMTEsNCArMTEsNSBAQCB2bXdnZngteSA6PSB2bXdnZnhfZXhlY2J1Zi5vIHZtd2dm eF9nbXIubyB2bXdnZnhfa21zLm8gdm13Z2Z4X2Rydi5vIFwKIAkgICAgdm13Z2Z4X3ZhbGlkYXRp b24ubyB2bXdnZnhfcGFnZV9kaXJ0eS5vIFwKIAkgICAgdHRtX29iamVjdC5vIHR0bV9sb2NrLm8K IAordm13Z2Z4LSQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSArPSB2bXdnZnhfdGhwLm8K IG9iai0kKENPTkZJR19EUk1fVk1XR0ZYKSA6PSB2bXdnZngubwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Zt d2dmeF9kcnYuaAppbmRleCA2ZmM4ZDVjMTcxYzYuLmQxOWQyOGMxMzY3MSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfZHJ2LmgKQEAgLTE0MDcsNiArMTQwNywxMyBAQCB2bV9mYXVsdF90IHZt d19ib192bV9odWdlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLAogCQkJCWVudW0gcGFnZV9l bnRyeV9zaXplIHBlX3NpemUpOwogI2VuZGlmCiAKKy8qIFRyYW5zcGFyZW50IGh1Z2VwYWdlIHN1 cHBvcnQgLSB2bXdnZnhfdGhwLmMgKi8KKyNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBB R0UKK2V4dGVybiBjb25zdCBzdHJ1Y3QgdHRtX21lbV90eXBlX21hbmFnZXJfZnVuYyB2bXdfdGhw X2Z1bmM7CisjZWxzZQorI2RlZmluZSB2bXdfdGhwX2Z1bmMgdHRtX2JvX21hbmFnZXJfZnVuYwor I2VuZGlmCisKIC8qKgogICogVk1XX0RFQlVHX0tNUyAtIERlYnVnIG91dHB1dCBmb3Iga2VybmVs IG1vZGUtc2V0dGluZwogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X3RocC5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdGhwLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iN2M4MTZiYTcxNjYKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF90aHAuYwpAQCAtMCwwICsxLDE2 NiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUCisvKgorICog SHVnZSBwYWdlLXRhYmxlLWVudHJ5IHN1cHBvcnQgZm9yIElPIG1lbW9yeS4KKyAqCisgKiBDb3B5 cmlnaHQgKEMpIDIwMDctMjAxOSBWbXdhcmUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZGQuCisg Ki8KKyNpbmNsdWRlICJ2bXdnZnhfZHJ2LmgiCisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fbW9kdWxl Lmg+CisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fZHJpdmVyLmg+CisjaW5jbHVkZSA8ZHJtL3R0 bS90dG1fcGxhY2VtZW50Lmg+CisKKy8qKgorICogc3RydWN0IHZtd190aHBfbWFuYWdlciAtIFJh bmdlIG1hbmFnZXIgaW1wbGVtZW50aW5nIGh1Z2UgcGFnZSBhbGlnbm1lbnQKKyAqCisgKiBAbW06 IFRoZSB1bmRlcmx5aW5nIHJhbmdlIG1hbmFnZXIuIFByb3RlY3RlZCBieSBAbG9jay4KKyAqIEBs b2NrOiBNYW5hZ2VyIGxvY2suCisgKi8KK3N0cnVjdCB2bXdfdGhwX21hbmFnZXIgeworCXN0cnVj dCBkcm1fbW0gbW07CisJc3BpbmxvY2tfdCBsb2NrOworfTsKKworc3RhdGljIGludCB2bXdfdGhw X2luc2VydF9hbGlnbmVkKHN0cnVjdCBkcm1fbW0gKm1tLCBzdHJ1Y3QgZHJtX21tX25vZGUgKm5v ZGUsCisJCQkJICB1bnNpZ25lZCBsb25nIGFsaWduX3BhZ2VzLAorCQkJCSAgY29uc3Qgc3RydWN0 IHR0bV9wbGFjZSAqcGxhY2UsCisJCQkJICBzdHJ1Y3QgdHRtX21lbV9yZWcgKm1lbSwKKwkJCQkg IHVuc2lnbmVkIGxvbmcgbHBmbiwKKwkJCQkgIGVudW0gZHJtX21tX2luc2VydF9tb2RlIG1vZGUp Cit7CisJaWYgKGFsaWduX3BhZ2VzID49IG1lbS0+cGFnZV9hbGlnbm1lbnQgJiYKKwkgICAgKCFt ZW0tPnBhZ2VfYWxpZ25tZW50IHx8IGFsaWduX3BhZ2VzICUgbWVtLT5wYWdlX2FsaWdubWVudCA9 PSAwKSkgeworCQlyZXR1cm4gZHJtX21tX2luc2VydF9ub2RlX2luX3JhbmdlKG1tLCBub2RlLAor CQkJCQkJICAgbWVtLT5udW1fcGFnZXMsCisJCQkJCQkgICBhbGlnbl9wYWdlcywgMCwKKwkJCQkJ CSAgIHBsYWNlLT5mcGZuLCBscGZuLCBtb2RlKTsKKwl9CisKKwlyZXR1cm4gLUVOT1NQQzsKK30K Kworc3RhdGljIGludCB2bXdfdGhwX2dldF9ub2RlKHN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdl ciAqbWFuLAorCQkJICAgIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCisJCQkgICAgY29u c3Qgc3RydWN0IHR0bV9wbGFjZSAqcGxhY2UsCisJCQkgICAgc3RydWN0IHR0bV9tZW1fcmVnICpt ZW0pCit7CisJc3RydWN0IHZtd190aHBfbWFuYWdlciAqcm1hbiA9IChzdHJ1Y3Qgdm13X3RocF9t YW5hZ2VyICopIG1hbi0+cHJpdjsKKwlzdHJ1Y3QgZHJtX21tICptbSA9ICZybWFuLT5tbTsKKwlz dHJ1Y3QgZHJtX21tX25vZGUgKm5vZGU7CisJdW5zaWduZWQgbG9uZyBhbGlnbl9wYWdlczsKKwl1 bnNpZ25lZCBsb25nIGxwZm47CisJZW51bSBkcm1fbW1faW5zZXJ0X21vZGUgbW9kZSA9IERSTV9N TV9JTlNFUlRfQkVTVDsKKwlpbnQgcmV0OworCisJbm9kZSA9IGt6YWxsb2Moc2l6ZW9mKCpub2Rl KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFub2RlKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWxwZm4g PSBwbGFjZS0+bHBmbjsKKwlpZiAoIWxwZm4pCisJCWxwZm4gPSBtYW4tPnNpemU7CisKKwltb2Rl ID0gRFJNX01NX0lOU0VSVF9CRVNUOworCWlmIChwbGFjZS0+ZmxhZ3MgJiBUVE1fUExfRkxBR19U T1BET1dOKQorCQltb2RlID0gRFJNX01NX0lOU0VSVF9ISUdIOworCisJc3Bpbl9sb2NrKCZybWFu LT5sb2NrKTsKKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hV R0VQQUdFX1BVRCkpIHsKKwkJYWxpZ25fcGFnZXMgPSAoSFBBR0VfUFVEX1NJWkUgPj4gUEFHRV9T SElGVCk7CisJCWlmIChtZW0tPm51bV9wYWdlcyA+PSBhbGlnbl9wYWdlcykgeworCQkJcmV0ID0g dm13X3RocF9pbnNlcnRfYWxpZ25lZChtbSwgbm9kZSwgYWxpZ25fcGFnZXMsCisJCQkJCQkgICAg IHBsYWNlLCBtZW0sIGxwZm4sIG1vZGUpOworCQkJaWYgKCFyZXQpCisJCQkJZ290byBmb3VuZF91 bmxvY2s7CisJCX0KKwl9CisKKwlhbGlnbl9wYWdlcyA9IChIUEFHRV9QTURfU0laRSA+PiBQQUdF X1NISUZUKTsKKwlpZiAobWVtLT5udW1fcGFnZXMgPj0gYWxpZ25fcGFnZXMpIHsKKwkJcmV0ID0g dm13X3RocF9pbnNlcnRfYWxpZ25lZChtbSwgbm9kZSwgYWxpZ25fcGFnZXMsIHBsYWNlLCBtZW0s CisJCQkJCSAgICAgbHBmbiwgbW9kZSk7CisJCWlmICghcmV0KQorCQkJZ290byBmb3VuZF91bmxv Y2s7CisJfQorCisJcmV0ID0gZHJtX21tX2luc2VydF9ub2RlX2luX3JhbmdlKG1tLCBub2RlLCBt ZW0tPm51bV9wYWdlcywKKwkJCQkJICBtZW0tPnBhZ2VfYWxpZ25tZW50LCAwLAorCQkJCQkgIHBs YWNlLT5mcGZuLCBscGZuLCBtb2RlKTsKK2ZvdW5kX3VubG9jazoKKwlzcGluX3VubG9jaygmcm1h bi0+bG9jayk7CisKKwlpZiAodW5saWtlbHkocmV0KSkgeworCQlrZnJlZShub2RlKTsKKwl9IGVs c2UgeworCQltZW0tPm1tX25vZGUgPSBub2RlOworCQltZW0tPnN0YXJ0ID0gbm9kZS0+c3RhcnQ7 CisJfQorCisJcmV0dXJuIDA7Cit9CisKKworCitzdGF0aWMgdm9pZCB2bXdfdGhwX3B1dF9ub2Rl KHN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlciAqbWFuLAorCQkJICAgICBzdHJ1Y3QgdHRtX21l bV9yZWcgKm1lbSkKK3sKKwlzdHJ1Y3Qgdm13X3RocF9tYW5hZ2VyICpybWFuID0gKHN0cnVjdCB2 bXdfdGhwX21hbmFnZXIgKikgbWFuLT5wcml2OworCisJaWYgKG1lbS0+bW1fbm9kZSkgeworCQlz cGluX2xvY2soJnJtYW4tPmxvY2spOworCQlkcm1fbW1fcmVtb3ZlX25vZGUobWVtLT5tbV9ub2Rl KTsKKwkJc3Bpbl91bmxvY2soJnJtYW4tPmxvY2spOworCisJCWtmcmVlKG1lbS0+bW1fbm9kZSk7 CisJCW1lbS0+bW1fbm9kZSA9IE5VTEw7CisJfQorfQorCitzdGF0aWMgaW50IHZtd190aHBfaW5p dChzdHJ1Y3QgdHRtX21lbV90eXBlX21hbmFnZXIgKm1hbiwKKwkJCXVuc2lnbmVkIGxvbmcgcF9z aXplKQoreworCXN0cnVjdCB2bXdfdGhwX21hbmFnZXIgKnJtYW47CisKKwlybWFuID0ga3phbGxv YyhzaXplb2YoKnJtYW4pLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXJtYW4pCisJCXJldHVybiAtRU5P TUVNOworCisJZHJtX21tX2luaXQoJnJtYW4tPm1tLCAwLCBwX3NpemUpOworCXNwaW5fbG9ja19p bml0KCZybWFuLT5sb2NrKTsKKwltYW4tPnByaXYgPSBybWFuOworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IHZtd190aHBfdGFrZWRvd24oc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICpt YW4pCit7CisJc3RydWN0IHZtd190aHBfbWFuYWdlciAqcm1hbiA9IChzdHJ1Y3Qgdm13X3RocF9t YW5hZ2VyICopIG1hbi0+cHJpdjsKKwlzdHJ1Y3QgZHJtX21tICptbSA9ICZybWFuLT5tbTsKKwor CXNwaW5fbG9jaygmcm1hbi0+bG9jayk7CisJaWYgKGRybV9tbV9jbGVhbihtbSkpIHsKKwkJZHJt X21tX3Rha2Vkb3duKG1tKTsKKwkJc3Bpbl91bmxvY2soJnJtYW4tPmxvY2spOworCQlrZnJlZShy bWFuKTsKKwkJbWFuLT5wcml2ID0gTlVMTDsKKwkJcmV0dXJuIDA7CisJfQorCXNwaW5fdW5sb2Nr KCZybWFuLT5sb2NrKTsKKwlyZXR1cm4gLUVCVVNZOworfQorCitzdGF0aWMgdm9pZCB2bXdfdGhw X2RlYnVnKHN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlciAqbWFuLAorCQkJICBzdHJ1Y3QgZHJt X3ByaW50ZXIgKnByaW50ZXIpCit7CisJc3RydWN0IHZtd190aHBfbWFuYWdlciAqcm1hbiA9IChz dHJ1Y3Qgdm13X3RocF9tYW5hZ2VyICopIG1hbi0+cHJpdjsKKworCXNwaW5fbG9jaygmcm1hbi0+ bG9jayk7CisJZHJtX21tX3ByaW50KCZybWFuLT5tbSwgcHJpbnRlcik7CisJc3Bpbl91bmxvY2so JnJtYW4tPmxvY2spOworfQorCitjb25zdCBzdHJ1Y3QgdHRtX21lbV90eXBlX21hbmFnZXJfZnVu YyB2bXdfdGhwX2Z1bmMgPSB7CisJLmluaXQgPSB2bXdfdGhwX2luaXQsCisJLnRha2Vkb3duID0g dm13X3RocF90YWtlZG93biwKKwkuZ2V0X25vZGUgPSB2bXdfdGhwX2dldF9ub2RlLAorCS5wdXRf bm9kZSA9IHZtd190aHBfcHV0X25vZGUsCisJLmRlYnVnID0gdm13X3RocF9kZWJ1ZworfTsKLS0g CjIuMjEuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==