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,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 CD2ECC11D0F for ; Thu, 20 Feb 2020 12:27:52 +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 9D3DF24656 for ; Thu, 20 Feb 2020 12:27:52 +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="Iu4ligxm" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9D3DF24656 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 230B46ED53; Thu, 20 Feb 2020 12:27:45 +0000 (UTC) Received: from pio-pvt-msa3.bahnhof.se (pio-pvt-msa3.bahnhof.se [79.136.2.42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 83D976E200 for ; Thu, 20 Feb 2020 12:27:43 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by pio-pvt-msa3.bahnhof.se (Postfix) with ESMTP id D8CE03F32A; Thu, 20 Feb 2020 13:27:41 +0100 (CET) Authentication-Results: pio-pvt-msa3.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b=Iu4ligxm; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Received: from pio-pvt-msa3.bahnhof.se ([127.0.0.1]) by localhost (pio-pvt-msa3.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zc4uuzZMDVRb; Thu, 20 Feb 2020 13:27:39 +0100 (CET) Received: from mail1.shipmail.org (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) (Authenticated sender: mb878879) by pio-pvt-msa3.bahnhof.se (Postfix) with ESMTPA id CD99A3F3A0; Thu, 20 Feb 2020 13:27:38 +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 525A2360549; Thu, 20 Feb 2020 13:27:35 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1582201655; bh=2LUNS0ihPNGa71h7AdkyE1bKBSLMu6PTF7hbfe1+Dkk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Iu4ligxmua0yVOZE+J9dJHkYQD+vGs7Pi2NBw2yBv1pS9A0ZbmotXrfLhBVOnP+xB x64JU8e4hD0aSxLTKsk0/JBSdaurSRmrZ0x3viHqOs5hG1GGfMRRtyXyst9hID68hz IUt553YdOn6Is6IhJENw3wgdgyKHMm6JLwj64zYU= 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 v4 8/9] drm/vmwgfx: Introduce a huge page aligning TTM range manager Date: Thu, 20 Feb 2020 13:27:18 +0100 Message-Id: <20200220122719.4302-9-thomas_os@shipmail.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200220122719.4302-1-thomas_os@shipmail.org> References: <20200220122719.4302-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: Thomas Hellstrom , Michal Hocko , pv-drivers@vmware.com, Roland Scheidegger , Dan Williams , Ralph Campbell , "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" RnJvbTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgoKVXNpbmcgaHVn ZSBwYWdlLXRhYmxlIGVudHJpZXMgcmVxdWlyZXMgdGhhdCB0aGUgcGh5c2ljYWwgYWRkcmVzcyBv ZiB0aGUKc3RhcnQgb2YgYSBidWZmZXIgb2JqZWN0IGlzIGh1Z2UgcGFnZSBzaXplIGFsaWduZWQu Ck1ha2UgYSBzcGVjaWFsIHZlcnNpb24gb2YgdGhlIFRUTSByYW5nZSBtYW5hZ2VyIHRoYXQgYWNj b21wbGlzaGVzIHRoaXMsCmJ1dCBmYWxscyBiYWNrIHRvIGEgc21hbGxlciBwYWdlIHNpemUgYWxp Z25tZW50IChQVUQtPlBNRCwgUE1ELT5OT1JNQUwpCnRvIGF2b2lkIGV2aWN0aW9uLgpJZiBvdGhl ciBkcml2ZXJzIHdhbnQgdG8gdXNlIGl0IGluIHRoZSBmdXR1cmUsIGl0IGNhbiBiZSBtYWRlIGEK VFRNIGdlbmVyaWMgaGVscGVyLiBOb3RlIHRoYXQgZHJpdmVycyBjYW4gZm9yY2UgZXZpY3Rpb24g Zm9yIGEgY2VydGFpbgphbGlnbm1lbnQgYnkgYXNzaWduaW5nIHRoZSBUVE0gR1BVIGFsaWdubWVu dCBjb3JyZXNwb25kaW5nbHkuCgpDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0 aW9uLm9yZz4KQ2M6IE1pY2hhbCBIb2NrbyA8bWhvY2tvQHN1c2UuY29tPgpDYzogIk1hdHRoZXcg V2lsY294IChPcmFjbGUpIiA8d2lsbHlAaW5mcmFkZWFkLm9yZz4KQ2M6ICJLaXJpbGwgQS4gU2h1 dGVtb3YiIDxraXJpbGwuc2h1dGVtb3ZAbGludXguaW50ZWwuY29tPgpDYzogUmFscGggQ2FtcGJl bGwgPHJjYW1wYmVsbEBudmlkaWEuY29tPgpDYzogIkrDqXLDtG1lIEdsaXNzZSIgPGpnbGlzc2VA cmVkaGF0LmNvbT4KQ2M6ICJDaHJpc3RpYW4gS8O2bmlnIiA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQu Y29tPgpDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+ClNpZ25lZC1v ZmYtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4KUmV2aWV3ZWQt Ynk6IFJvbGFuZCBTY2hlaWRlZ2dlciA8c3JvbGFuZEB2bXdhcmUuY29tPgpBY2tlZC1ieTogQ2hy aXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS92bXdnZngvTWFrZWZpbGUgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS92bXdnZngv dm13Z2Z4X2Rydi5oIHwgICA3ICsrCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF90aHAu YyB8IDE2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE3 NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfdGhwLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9NYWtlZmlsZQppbmRleCBjODc3YTIxYTA3Mzku LjQyMWRkMmE0OTdhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9NYWtlZmls ZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L01ha2VmaWxlCkBAIC0xMSw0ICsxMSw1IEBA IHZtd2dmeC15IDo9IHZtd2dmeF9leGVjYnVmLm8gdm13Z2Z4X2dtci5vIHZtd2dmeF9rbXMubyB2 bXdnZnhfZHJ2Lm8gXAogCSAgICB2bXdnZnhfdmFsaWRhdGlvbi5vIHZtd2dmeF9wYWdlX2RpcnR5 Lm8gXAogCSAgICB0dG1fb2JqZWN0Lm8gdHRtX2xvY2subwogCit2bXdnZngtJChDT05GSUdfVFJB TlNQQVJFTlRfSFVHRVBBR0UpICs9IHZtd2dmeF90aHAubwogb2JqLSQoQ09ORklHX0RSTV9WTVdH RlgpIDo9IHZtd2dmeC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oCmluZGV4IDgyZDg2 ZjJkMjU2OS4uMDYyNjcxODRhYTBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaApA QCAtMTQzMyw2ICsxNDMzLDEzIEBAIHZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2h1Z2VfZmF1bHQoc3Ry dWN0IHZtX2ZhdWx0ICp2bWYsCiAJCQkJZW51bSBwYWdlX2VudHJ5X3NpemUgcGVfc2l6ZSk7CiAj ZW5kaWYKIAorLyogVHJhbnNwYXJlbnQgaHVnZXBhZ2Ugc3VwcG9ydCAtIHZtd2dmeF90aHAuYyAq LworI2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRQorZXh0ZXJuIGNvbnN0IHN0cnVj dCB0dG1fbWVtX3R5cGVfbWFuYWdlcl9mdW5jIHZtd190aHBfZnVuYzsKKyNlbHNlCisjZGVmaW5l IHZtd190aHBfZnVuYyB0dG1fYm9fbWFuYWdlcl9mdW5jCisjZW5kaWYKKwogLyoqCiAgKiBWTVdf REVCVUdfS01TIC0gRGVidWcgb3V0cHV0IGZvciBrZXJuZWwgbW9kZS1zZXR0aW5nCiAgKgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdGhwLmMgYi9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF90aHAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmI3YzgxNmJhNzE2NgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X3RocC5jCkBAIC0wLDAgKzEsMTY2IEBACisvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQKKy8qCisgKiBIdWdlIHBhZ2UtdGFibGUtZW50cnkg c3VwcG9ydCBmb3IgSU8gbWVtb3J5LgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE5IFZt d2FyZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkZC4KKyAqLworI2luY2x1ZGUgInZtd2dmeF9k cnYuaCIKKyNpbmNsdWRlIDxkcm0vdHRtL3R0bV9tb2R1bGUuaD4KKyNpbmNsdWRlIDxkcm0vdHRt L3R0bV9ib19kcml2ZXIuaD4KKyNpbmNsdWRlIDxkcm0vdHRtL3R0bV9wbGFjZW1lbnQuaD4KKwor LyoqCisgKiBzdHJ1Y3Qgdm13X3RocF9tYW5hZ2VyIC0gUmFuZ2UgbWFuYWdlciBpbXBsZW1lbnRp bmcgaHVnZSBwYWdlIGFsaWdubWVudAorICoKKyAqIEBtbTogVGhlIHVuZGVybHlpbmcgcmFuZ2Ug bWFuYWdlci4gUHJvdGVjdGVkIGJ5IEBsb2NrLgorICogQGxvY2s6IE1hbmFnZXIgbG9jay4KKyAq Lworc3RydWN0IHZtd190aHBfbWFuYWdlciB7CisJc3RydWN0IGRybV9tbSBtbTsKKwlzcGlubG9j a190IGxvY2s7Cit9OworCitzdGF0aWMgaW50IHZtd190aHBfaW5zZXJ0X2FsaWduZWQoc3RydWN0 IGRybV9tbSAqbW0sIHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSwKKwkJCQkgIHVuc2lnbmVkIGxv bmcgYWxpZ25fcGFnZXMsCisJCQkJICBjb25zdCBzdHJ1Y3QgdHRtX3BsYWNlICpwbGFjZSwKKwkJ CQkgIHN0cnVjdCB0dG1fbWVtX3JlZyAqbWVtLAorCQkJCSAgdW5zaWduZWQgbG9uZyBscGZuLAor CQkJCSAgZW51bSBkcm1fbW1faW5zZXJ0X21vZGUgbW9kZSkKK3sKKwlpZiAoYWxpZ25fcGFnZXMg Pj0gbWVtLT5wYWdlX2FsaWdubWVudCAmJgorCSAgICAoIW1lbS0+cGFnZV9hbGlnbm1lbnQgfHwg YWxpZ25fcGFnZXMgJSBtZW0tPnBhZ2VfYWxpZ25tZW50ID09IDApKSB7CisJCXJldHVybiBkcm1f bW1faW5zZXJ0X25vZGVfaW5fcmFuZ2UobW0sIG5vZGUsCisJCQkJCQkgICBtZW0tPm51bV9wYWdl cywKKwkJCQkJCSAgIGFsaWduX3BhZ2VzLCAwLAorCQkJCQkJICAgcGxhY2UtPmZwZm4sIGxwZm4s IG1vZGUpOworCX0KKworCXJldHVybiAtRU5PU1BDOworfQorCitzdGF0aWMgaW50IHZtd190aHBf Z2V0X25vZGUoc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICptYW4sCisJCQkgICAgc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICpibywKKwkJCSAgICBjb25zdCBzdHJ1Y3QgdHRtX3BsYWNlICpw bGFjZSwKKwkJCSAgICBzdHJ1Y3QgdHRtX21lbV9yZWcgKm1lbSkKK3sKKwlzdHJ1Y3Qgdm13X3Ro cF9tYW5hZ2VyICpybWFuID0gKHN0cnVjdCB2bXdfdGhwX21hbmFnZXIgKikgbWFuLT5wcml2Owor CXN0cnVjdCBkcm1fbW0gKm1tID0gJnJtYW4tPm1tOworCXN0cnVjdCBkcm1fbW1fbm9kZSAqbm9k ZTsKKwl1bnNpZ25lZCBsb25nIGFsaWduX3BhZ2VzOworCXVuc2lnbmVkIGxvbmcgbHBmbjsKKwll bnVtIGRybV9tbV9pbnNlcnRfbW9kZSBtb2RlID0gRFJNX01NX0lOU0VSVF9CRVNUOworCWludCBy ZXQ7CisKKwlub2RlID0ga3phbGxvYyhzaXplb2YoKm5vZGUpLCBHRlBfS0VSTkVMKTsKKwlpZiAo IW5vZGUpCisJCXJldHVybiAtRU5PTUVNOworCisJbHBmbiA9IHBsYWNlLT5scGZuOworCWlmICgh bHBmbikKKwkJbHBmbiA9IG1hbi0+c2l6ZTsKKworCW1vZGUgPSBEUk1fTU1fSU5TRVJUX0JFU1Q7 CisJaWYgKHBsYWNlLT5mbGFncyAmIFRUTV9QTF9GTEFHX1RPUERPV04pCisJCW1vZGUgPSBEUk1f TU1fSU5TRVJUX0hJR0g7CisKKwlzcGluX2xvY2soJnJtYW4tPmxvY2spOworCWlmIChJU19FTkFC TEVEKENPTkZJR19IQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEKSkgeworCQlhbGln bl9wYWdlcyA9IChIUEFHRV9QVURfU0laRSA+PiBQQUdFX1NISUZUKTsKKwkJaWYgKG1lbS0+bnVt X3BhZ2VzID49IGFsaWduX3BhZ2VzKSB7CisJCQlyZXQgPSB2bXdfdGhwX2luc2VydF9hbGlnbmVk KG1tLCBub2RlLCBhbGlnbl9wYWdlcywKKwkJCQkJCSAgICAgcGxhY2UsIG1lbSwgbHBmbiwgbW9k ZSk7CisJCQlpZiAoIXJldCkKKwkJCQlnb3RvIGZvdW5kX3VubG9jazsKKwkJfQorCX0KKworCWFs aWduX3BhZ2VzID0gKEhQQUdFX1BNRF9TSVpFID4+IFBBR0VfU0hJRlQpOworCWlmIChtZW0tPm51 bV9wYWdlcyA+PSBhbGlnbl9wYWdlcykgeworCQlyZXQgPSB2bXdfdGhwX2luc2VydF9hbGlnbmVk KG1tLCBub2RlLCBhbGlnbl9wYWdlcywgcGxhY2UsIG1lbSwKKwkJCQkJICAgICBscGZuLCBtb2Rl KTsKKwkJaWYgKCFyZXQpCisJCQlnb3RvIGZvdW5kX3VubG9jazsKKwl9CisKKwlyZXQgPSBkcm1f bW1faW5zZXJ0X25vZGVfaW5fcmFuZ2UobW0sIG5vZGUsIG1lbS0+bnVtX3BhZ2VzLAorCQkJCQkg IG1lbS0+cGFnZV9hbGlnbm1lbnQsIDAsCisJCQkJCSAgcGxhY2UtPmZwZm4sIGxwZm4sIG1vZGUp OworZm91bmRfdW5sb2NrOgorCXNwaW5fdW5sb2NrKCZybWFuLT5sb2NrKTsKKworCWlmICh1bmxp a2VseShyZXQpKSB7CisJCWtmcmVlKG5vZGUpOworCX0gZWxzZSB7CisJCW1lbS0+bW1fbm9kZSA9 IG5vZGU7CisJCW1lbS0+c3RhcnQgPSBub2RlLT5zdGFydDsKKwl9CisKKwlyZXR1cm4gMDsKK30K KworCisKK3N0YXRpYyB2b2lkIHZtd190aHBfcHV0X25vZGUoc3RydWN0IHR0bV9tZW1fdHlwZV9t YW5hZ2VyICptYW4sCisJCQkgICAgIHN0cnVjdCB0dG1fbWVtX3JlZyAqbWVtKQoreworCXN0cnVj dCB2bXdfdGhwX21hbmFnZXIgKnJtYW4gPSAoc3RydWN0IHZtd190aHBfbWFuYWdlciAqKSBtYW4t PnByaXY7CisKKwlpZiAobWVtLT5tbV9ub2RlKSB7CisJCXNwaW5fbG9jaygmcm1hbi0+bG9jayk7 CisJCWRybV9tbV9yZW1vdmVfbm9kZShtZW0tPm1tX25vZGUpOworCQlzcGluX3VubG9jaygmcm1h bi0+bG9jayk7CisKKwkJa2ZyZWUobWVtLT5tbV9ub2RlKTsKKwkJbWVtLT5tbV9ub2RlID0gTlVM TDsKKwl9Cit9CisKK3N0YXRpYyBpbnQgdm13X3RocF9pbml0KHN0cnVjdCB0dG1fbWVtX3R5cGVf bWFuYWdlciAqbWFuLAorCQkJdW5zaWduZWQgbG9uZyBwX3NpemUpCit7CisJc3RydWN0IHZtd190 aHBfbWFuYWdlciAqcm1hbjsKKworCXJtYW4gPSBremFsbG9jKHNpemVvZigqcm1hbiksIEdGUF9L RVJORUwpOworCWlmICghcm1hbikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkcm1fbW1faW5pdCgm cm1hbi0+bW0sIDAsIHBfc2l6ZSk7CisJc3Bpbl9sb2NrX2luaXQoJnJtYW4tPmxvY2spOworCW1h bi0+cHJpdiA9IHJtYW47CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdm13X3RocF90YWtl ZG93bihzdHJ1Y3QgdHRtX21lbV90eXBlX21hbmFnZXIgKm1hbikKK3sKKwlzdHJ1Y3Qgdm13X3Ro cF9tYW5hZ2VyICpybWFuID0gKHN0cnVjdCB2bXdfdGhwX21hbmFnZXIgKikgbWFuLT5wcml2Owor CXN0cnVjdCBkcm1fbW0gKm1tID0gJnJtYW4tPm1tOworCisJc3Bpbl9sb2NrKCZybWFuLT5sb2Nr KTsKKwlpZiAoZHJtX21tX2NsZWFuKG1tKSkgeworCQlkcm1fbW1fdGFrZWRvd24obW0pOworCQlz cGluX3VubG9jaygmcm1hbi0+bG9jayk7CisJCWtmcmVlKHJtYW4pOworCQltYW4tPnByaXYgPSBO VUxMOworCQlyZXR1cm4gMDsKKwl9CisJc3Bpbl91bmxvY2soJnJtYW4tPmxvY2spOworCXJldHVy biAtRUJVU1k7Cit9CisKK3N0YXRpYyB2b2lkIHZtd190aHBfZGVidWcoc3RydWN0IHR0bV9tZW1f dHlwZV9tYW5hZ2VyICptYW4sCisJCQkgIHN0cnVjdCBkcm1fcHJpbnRlciAqcHJpbnRlcikKK3sK KwlzdHJ1Y3Qgdm13X3RocF9tYW5hZ2VyICpybWFuID0gKHN0cnVjdCB2bXdfdGhwX21hbmFnZXIg KikgbWFuLT5wcml2OworCisJc3Bpbl9sb2NrKCZybWFuLT5sb2NrKTsKKwlkcm1fbW1fcHJpbnQo JnJtYW4tPm1tLCBwcmludGVyKTsKKwlzcGluX3VubG9jaygmcm1hbi0+bG9jayk7Cit9CisKK2Nv bnN0IHN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlcl9mdW5jIHZtd190aHBfZnVuYyA9IHsKKwku aW5pdCA9IHZtd190aHBfaW5pdCwKKwkudGFrZWRvd24gPSB2bXdfdGhwX3Rha2Vkb3duLAorCS5n ZXRfbm9kZSA9IHZtd190aHBfZ2V0X25vZGUsCisJLnB1dF9ub2RlID0gdm13X3RocF9wdXRfbm9k ZSwKKwkuZGVidWcgPSB2bXdfdGhwX2RlYnVnCit9OwotLSAKMi4yMS4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK