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=-9.6 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,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 03661C11D07 for ; Thu, 20 Feb 2020 12:28:00 +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 CE64C24670 for ; Thu, 20 Feb 2020 12:27:59 +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="Hty0YtRG" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CE64C24670 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 43C056ED5C; Thu, 20 Feb 2020 12:27:46 +0000 (UTC) Received: from ste-pvt-msa1.bahnhof.se (ste-pvt-msa1.bahnhof.se [213.80.101.70]) by gabe.freedesktop.org (Postfix) with ESMTPS id 98DD66E8F0 for ; Thu, 20 Feb 2020 12:27:43 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by ste-pvt-msa1.bahnhof.se (Postfix) with ESMTP id 244F03F481; Thu, 20 Feb 2020 13:27:42 +0100 (CET) Authentication-Results: ste-pvt-msa1.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b=Hty0YtRG; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Received: from ste-pvt-msa1.bahnhof.se ([127.0.0.1]) by localhost (ste-pvt-msa1.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id c2VREWPuKGEt; 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 ste-pvt-msa1.bahnhof.se (Postfix) with ESMTPA id CCC133F68F; 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 2B05836051B; 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=MZsp0CT1fSNASMu9167ERGBAsKSQTexAyexHX1LllWk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Hty0YtRGsQrJy9jToFqAO7tCZAPgFitHZ+Cols04LuVee875ikM+wjQkzgR7tInP2 fFNevv77eTqPVilaA+hpWP+Izf3zKEPHydMf4dhgfNglZIA6MeBb1GGhvndXzEV7Vm 6KHJnLFV4dIf291WaA3xpxfJCg9KRl6J2E3PwMDo= 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 7/9] drm: Add a drm_get_unmapped_area() helper Date: Thu, 20 Feb 2020 13:27:17 +0100 Message-Id: <20200220122719.4302-8-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" RnJvbTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgoKVW5hbGlnbmVk IHZpcnR1YWwgYWRkcmVzc2VzIG1ha2VzIGl0IHVubGlrZWx5IHRoYXQgaHVnZSBwYWdlLXRhYmxl IGVudHJpZXMKY2FuIGJlIHVzZWQuClNvIGFsaWduIHZpcnR1YWwgYnVmZmVyIG9iamVjdCBhZGRy ZXNzIGh1Z2UgcGFnZSBib3VuZGFyaWVzIHRvIHRoZQp1bmRlcmx5aW5nIHBoeXNpY2FsIGFkZHJl c3MgaHVnZSBwYWdlIGJvdW5kYXJpZXMgdGFraW5nIGJ1ZmZlciBvYmplY3QKc2l6ZXMgaW50byBh Y2NvdW50IHRvIGRldGVybWluZSB3aGVuIGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIHVzZSBodWdl CnBhZ2UtdGFibGUgZW50cmllcy4KCkNjOiBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5k YXRpb24ub3JnPgpDYzogTWljaGFsIEhvY2tvIDxtaG9ja29Ac3VzZS5jb20+CkNjOiAiTWF0dGhl dyBXaWxjb3ggKE9yYWNsZSkiIDx3aWxseUBpbmZyYWRlYWQub3JnPgpDYzogIktpcmlsbCBBLiBT aHV0ZW1vdiIgPGtpcmlsbC5zaHV0ZW1vdkBsaW51eC5pbnRlbC5jb20+CkNjOiBSYWxwaCBDYW1w YmVsbCA8cmNhbXBiZWxsQG52aWRpYS5jb20+CkNjOiAiSsOpcsO0bWUgR2xpc3NlIiA8amdsaXNz ZUByZWRoYXQuY29tPgpDYzogIkNocmlzdGlhbiBLw7ZuaWciIDxjaHJpc3RpYW4ua29lbmlnQGFt ZC5jb20+CkNjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KU2lnbmVk LW9mZi1ieTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgpSZXZpZXdl ZC1ieTogUm9sYW5kIFNjaGVpZGVnZ2VyIDxzcm9sYW5kQHZtd2FyZS5jb20+CkFja2VkLWJ5OiBD aHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2RybV9maWxlLmMgfCAxMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogaW5jbHVkZS9kcm0vZHJtX2ZpbGUuaCAgICAgfCAgIDUgKysKIDIgZmlsZXMgY2hhbmdl ZCwgMTQxIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zp bGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jCmluZGV4IDkyZDE2NzI0Zjk0OS4uNDBm YWUzNTZkMjAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYwpAQCAtMzksMTAgKzM5LDEzIEBACiAjaW5jbHVkZSA8 bGludXgvcG9sbC5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KIAorI2luY2x1ZGUgPHVhcGkv YXNtL21tYW4uaD4KKwogI2luY2x1ZGUgPGRybS9kcm1fY2xpZW50Lmg+CiAjaW5jbHVkZSA8ZHJt L2RybV9kcnYuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZpbGUuaD4KICNpbmNsdWRlIDxkcm0vZHJt X3ByaW50Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV92bWFfbWFuYWdlci5oPgogCiAjaW5jbHVkZSAi ZHJtX2NydGNfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIKQEAgLTc5Niwz ICs3OTksMTM2IEBAIHN0cnVjdCBmaWxlICptb2NrX2RybV9nZXRmaWxlKHN0cnVjdCBkcm1fbWlu b3IgKm1pbm9yLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJcmV0dXJuIGZpbGU7CiB9CiBFWFBPUlRf U1lNQk9MX0ZPUl9URVNUU19PTkxZKG1vY2tfZHJtX2dldGZpbGUpOworCisjaWZkZWYgQ09ORklH X1RSQU5TUEFSRU5UX0hVR0VQQUdFCisvKgorICogZHJtX2FkZHJfaW5mbGF0ZSgpIGF0dGVtcHRz IHRvIGNvbnN0cnVjdCBhbiBhbGlnbmVkIGFyZWEgYnkgaW5mbGF0aW5nCisgKiB0aGUgYXJlYSBz aXplIGFuZCBza2lwcGluZyB0aGUgdW5hbGlnbmVkIHN0YXJ0IG9mIHRoZSBhcmVhLgorICogYWRh cHRlZCBmcm9tIHNobWVtX2dldF91bm1hcHBlZF9hcmVhKCkKKyAqLworc3RhdGljIHVuc2lnbmVk IGxvbmcgZHJtX2FkZHJfaW5mbGF0ZSh1bnNpZ25lZCBsb25nIGFkZHIsCisJCQkJICAgICAgdW5z aWduZWQgbG9uZyBsZW4sCisJCQkJICAgICAgdW5zaWduZWQgbG9uZyBwZ29mZiwKKwkJCQkgICAg ICB1bnNpZ25lZCBsb25nIGZsYWdzLAorCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgaHVnZV9zaXpl KQoreworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmZsYXRlZF9sZW47CisJdW5zaWduZWQgbG9u ZyBpbmZsYXRlZF9hZGRyOworCXVuc2lnbmVkIGxvbmcgaW5mbGF0ZWRfb2Zmc2V0OworCisJb2Zm c2V0ID0gKHBnb2ZmIDw8IFBBR0VfU0hJRlQpICYgKGh1Z2Vfc2l6ZSAtIDEpOworCWlmIChvZmZz ZXQgJiYgb2Zmc2V0ICsgbGVuIDwgMiAqIGh1Z2Vfc2l6ZSkKKwkJcmV0dXJuIGFkZHI7CisJaWYg KChhZGRyICYgKGh1Z2Vfc2l6ZSAtIDEpKSA9PSBvZmZzZXQpCisJCXJldHVybiBhZGRyOworCisJ aW5mbGF0ZWRfbGVuID0gbGVuICsgaHVnZV9zaXplIC0gUEFHRV9TSVpFOworCWlmIChpbmZsYXRl ZF9sZW4gPiBUQVNLX1NJWkUpCisJCXJldHVybiBhZGRyOworCWlmIChpbmZsYXRlZF9sZW4gPCBs ZW4pCisJCXJldHVybiBhZGRyOworCisJaW5mbGF0ZWRfYWRkciA9IGN1cnJlbnQtPm1tLT5nZXRf dW5tYXBwZWRfYXJlYShOVUxMLCAwLCBpbmZsYXRlZF9sZW4sCisJCQkJCQkgICAgICAgMCwgZmxh Z3MpOworCWlmIChJU19FUlJfVkFMVUUoaW5mbGF0ZWRfYWRkcikpCisJCXJldHVybiBhZGRyOwor CWlmIChpbmZsYXRlZF9hZGRyICYgflBBR0VfTUFTSykKKwkJcmV0dXJuIGFkZHI7CisKKwlpbmZs YXRlZF9vZmZzZXQgPSBpbmZsYXRlZF9hZGRyICYgKGh1Z2Vfc2l6ZSAtIDEpOworCWluZmxhdGVk X2FkZHIgKz0gb2Zmc2V0IC0gaW5mbGF0ZWRfb2Zmc2V0OworCWlmIChpbmZsYXRlZF9vZmZzZXQg PiBvZmZzZXQpCisJCWluZmxhdGVkX2FkZHIgKz0gaHVnZV9zaXplOworCisJaWYgKGluZmxhdGVk X2FkZHIgPiBUQVNLX1NJWkUgLSBsZW4pCisJCXJldHVybiBhZGRyOworCisJcmV0dXJuIGluZmxh dGVkX2FkZHI7Cit9CisKKy8qKgorICogZHJtX2dldF91bm1hcHBlZF9hcmVhKCkgLSBHZXQgYW4g dW51c2VkIHVzZXItc3BhY2UgdmlydHVhbCBtZW1vcnkgYXJlYQorICogc3VpdGFibGUgZm9yIGh1 Z2UgcGFnZSB0YWJsZSBlbnRyaWVzLgorICogQGZpbGU6IFRoZSBzdHJ1Y3QgZmlsZSByZXByZXNl bnRpbmcgdGhlIGFkZHJlc3Mgc3BhY2UgYmVpbmcgbW1hcCgpJ2QuCisgKiBAdWFkZHI6IFN0YXJ0 IGFkZHJlc3Mgc3VnZ2VzdGVkIGJ5IHVzZXItc3BhY2UuCisgKiBAbGVuOiBMZW5ndGggb2YgdGhl IGFyZWEuCisgKiBAcGdvZmY6IFRoZSBwYWdlIG9mZnNldCBpbnRvIHRoZSBhZGRyZXNzIHNwYWNl LgorICogQGZsYWdzOiBtbWFwIGZsYWdzCisgKiBAbWdyOiBUaGUgYWRkcmVzcyBzcGFjZSBtYW5h Z2VyIHVzZWQgYnkgdGhlIGRybSBkcml2ZXIuIFRoaXMgYXJndW1lbnQgY2FuCisgKiBwcm9iYWJs eSBiZSByZW1vdmVkIGF0IHNvbWUgcG9pbnQgd2hlbiBhbGwgZHJpdmVycyB1c2UgdGhlIHNhbWUK KyAqIGFkZHJlc3Mgc3BhY2UgbWFuYWdlci4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGF0dGVtcHRz IHRvIGZpbmQgYW4gdW51c2VkIHVzZXItc3BhY2UgdmlydHVhbCBtZW1vcnkgYXJlYQorICogdGhh dCBjYW4gYWNjb21tb2RhdGUgdGhlIHNpemUgd2Ugd2FudCB0byBtYXAsIGFuZCB0aGF0IGlzIHBy b3Blcmx5CisgKiBhbGlnbmVkIHRvIGZhY2lsaXRhdGUgaHVnZSBwYWdlIHRhYmxlIGVudHJpZXMg bWF0Y2hpbmcgYWN0dWFsCisgKiBodWdlIHBhZ2VzIG9yIGh1Z2UgcGFnZSBhbGlnbmVkIG1lbW9y eSBpbiBidWZmZXIgb2JqZWN0cy4gQnVmZmVyIG9iamVjdHMKKyAqIGFyZSBhc3N1bWVkIHRvIHN0 YXJ0IGF0IGh1Z2UgcGFnZSBib3VuZGFyeSBwZm5zIChpbyBtZW1vcnkpIG9yIGJlCisgKiBwb3B1 bGF0ZWQgYnkgaHVnZSBwYWdlcyBhbGlnbmVkIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIG9i amVjdAorICogKHN5c3RlbS0gb3IgY29oZXJlbnQgbWVtb3J5KS4gQWRhcHRlZCBmcm9tIHNobWVt X2dldF91bm1hcHBlZF9hcmVhLgorICoKKyAqIFJldHVybjogYWxpZ25lZCB1c2VyLXNwYWNlIGFk ZHJlc3MuCisgKi8KK3Vuc2lnbmVkIGxvbmcgZHJtX2dldF91bm1hcHBlZF9hcmVhKHN0cnVjdCBm aWxlICpmaWxlLAorCQkJCSAgICB1bnNpZ25lZCBsb25nIHVhZGRyLCB1bnNpZ25lZCBsb25nIGxl biwKKwkJCQkgICAgdW5zaWduZWQgbG9uZyBwZ29mZiwgdW5zaWduZWQgbG9uZyBmbGFncywKKwkJ CQkgICAgc3RydWN0IGRybV92bWFfb2Zmc2V0X21hbmFnZXIgKm1ncikKK3sKKwl1bnNpZ25lZCBs b25nIGFkZHI7CisJdW5zaWduZWQgbG9uZyBpbmZsYXRlZF9hZGRyOworCXN0cnVjdCBkcm1fdm1h X29mZnNldF9ub2RlICpub2RlOworCisJaWYgKGxlbiA+IFRBU0tfU0laRSkKKwkJcmV0dXJuIC1F Tk9NRU07CisKKwkvKgorCSAqIEBwZ29mZiBpcyB0aGUgZmlsZSBwYWdlLW9mZnNldCB0aGUgaHVn ZSBwYWdlIGJvdW5kYXJpZXMgb2YKKwkgKiB3aGljaCB0eXBpY2FsbHkgYWxpZ25zIHRvIHBoeXNp Y2FsIGFkZHJlc3MgaHVnZSBwYWdlIGJvdW5kYXJpZXMuCisJICogVGhhdCdzIG5vdCB0cnVlIGZv ciBEUk0sIGhvd2V2ZXIsIHdoZXJlIHBoeXNpY2FsIGFkZHJlc3MgaHVnZQorCSAqIHBhZ2UgYm91 bmRhcmllcyBpbnN0ZWFkIGFyZSBhbGlnbmVkIHdpdGggdGhlIG9mZnNldCBmcm9tCisJICogYnVm ZmVyIG9iamVjdCBzdGFydC4gU28gYWRqdXN0IEBwZ29mZiB0byBiZSB0aGUgb2Zmc2V0IGZyb20K KwkgKiBidWZmZXIgb2JqZWN0IHN0YXJ0LgorCSAqLworCWRybV92bWFfb2Zmc2V0X2xvY2tfbG9v a3VwKG1ncik7CisJbm9kZSA9IGRybV92bWFfb2Zmc2V0X2xvb2t1cF9sb2NrZWQobWdyLCBwZ29m ZiwgMSk7CisJaWYgKG5vZGUpCisJCXBnb2ZmIC09IG5vZGUtPnZtX25vZGUuc3RhcnQ7CisJZHJt X3ZtYV9vZmZzZXRfdW5sb2NrX2xvb2t1cChtZ3IpOworCisJYWRkciA9IGN1cnJlbnQtPm1tLT5n ZXRfdW5tYXBwZWRfYXJlYShmaWxlLCB1YWRkciwgbGVuLCBwZ29mZiwgZmxhZ3MpOworCWlmIChJ U19FUlJfVkFMVUUoYWRkcikpCisJCXJldHVybiBhZGRyOworCWlmIChhZGRyICYgflBBR0VfTUFT SykKKwkJcmV0dXJuIGFkZHI7CisJaWYgKGFkZHIgPiBUQVNLX1NJWkUgLSBsZW4pCisJCXJldHVy biBhZGRyOworCisJaWYgKGxlbiA8IEhQQUdFX1BNRF9TSVpFKQorCQlyZXR1cm4gYWRkcjsKKwlp ZiAoZmxhZ3MgJiBNQVBfRklYRUQpCisJCXJldHVybiBhZGRyOworCS8qCisJICogT3VyIHByaW9y aXR5IGlzIHRvIHN1cHBvcnQgTUFQX1NIQVJFRCBtYXBwZWQgaHVnZWx5OworCSAqIGFuZCBzdXBw b3J0IE1BUF9QUklWQVRFIG1hcHBlZCBodWdlbHkgdG9vLCB1bnRpbCBpdCBpcyBDT1dlZC4KKwkg KiBCdXQgaWYgY2FsbGVyIHNwZWNpZmllZCBhbiBhZGRyZXNzIGhpbnQsIHJlc3BlY3QgdGhhdCBh cyBiZWZvcmUuCisJICovCisJaWYgKHVhZGRyKQorCQlyZXR1cm4gYWRkcjsKKworCWluZmxhdGVk X2FkZHIgPSBkcm1fYWRkcl9pbmZsYXRlKGFkZHIsIGxlbiwgcGdvZmYsIGZsYWdzLAorCQkJCQkg SFBBR0VfUE1EX1NJWkUpOworCisJaWYgKElTX0VOQUJMRUQoQ09ORklHX0hBVkVfQVJDSF9UUkFO U1BBUkVOVF9IVUdFUEFHRV9QVUQpICYmCisJICAgIGxlbiA+PSBIUEFHRV9QVURfU0laRSkKKwkJ aW5mbGF0ZWRfYWRkciA9IGRybV9hZGRyX2luZmxhdGUoaW5mbGF0ZWRfYWRkciwgbGVuLCBwZ29m ZiwKKwkJCQkJCSBmbGFncywgSFBBR0VfUFVEX1NJWkUpOworCXJldHVybiBpbmZsYXRlZF9hZGRy OworfQorI2Vsc2UgLyogQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFICovCit1bnNpZ25lZCBs b25nIGRybV9nZXRfdW5tYXBwZWRfYXJlYShzdHJ1Y3QgZmlsZSAqZmlsZSwKKwkJCQkgICAgdW5z aWduZWQgbG9uZyB1YWRkciwgdW5zaWduZWQgbG9uZyBsZW4sCisJCQkJICAgIHVuc2lnbmVkIGxv bmcgcGdvZmYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCisJCQkJICAgIHN0cnVjdCBkcm1fdm1hX29m ZnNldF9tYW5hZ2VyICptZ3IpCit7CisJcmV0dXJuIGN1cnJlbnQtPm1tLT5nZXRfdW5tYXBwZWRf YXJlYShmaWxlLCB1YWRkciwgbGVuLCBwZ29mZiwgZmxhZ3MpOworfQorI2VuZGlmIC8qIENPTkZJ R19UUkFOU1BBUkVOVF9IVUdFUEFHRSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Zp bGUuaCBiL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKaW5kZXggOGIwOTliMzQ3ODE3Li4wNmZlM2Rh MDliMjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKKysrIGIvaW5jbHVkZS9k cm0vZHJtX2ZpbGUuaApAQCAtMzg3LDYgKzM4NywxMSBAQCB2b2lkIGRybV9ldmVudF9jYW5jZWxf ZnJlZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJICAgc3RydWN0IGRybV9wZW5kaW5nX2V2 ZW50ICpwKTsKIHZvaWQgZHJtX3NlbmRfZXZlbnRfbG9ja2VkKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCBkcm1fcGVuZGluZ19ldmVudCAqZSk7CiB2b2lkIGRybV9zZW5kX2V2ZW50KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fcGVuZGluZ19ldmVudCAqZSk7CitzdHJ1 Y3QgZHJtX3ZtYV9vZmZzZXRfbWFuYWdlcjsKK3Vuc2lnbmVkIGxvbmcgZHJtX2dldF91bm1hcHBl ZF9hcmVhKHN0cnVjdCBmaWxlICpmaWxlLAorCQkJCSAgICB1bnNpZ25lZCBsb25nIHVhZGRyLCB1 bnNpZ25lZCBsb25nIGxlbiwKKwkJCQkgICAgdW5zaWduZWQgbG9uZyBwZ29mZiwgdW5zaWduZWQg bG9uZyBmbGFncywKKwkJCQkgICAgc3RydWN0IGRybV92bWFfb2Zmc2V0X21hbmFnZXIgKm1ncik7 CiAKIHN0cnVjdCBmaWxlICptb2NrX2RybV9nZXRmaWxlKHN0cnVjdCBkcm1fbWlub3IgKm1pbm9y LCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwogCi0tIAoyLjIxLjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= 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=-9.6 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,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 9469DC11D0C for ; Thu, 20 Feb 2020 12:28:01 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 3EF8324673 for ; Thu, 20 Feb 2020 12:28:01 +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="Hty0YtRG" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3EF8324673 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=shipmail.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 0206F6B000E; Thu, 20 Feb 2020 07:27:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E94966B006E; Thu, 20 Feb 2020 07:27:44 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C274F6B006C; Thu, 20 Feb 2020 07:27:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0104.hostedemail.com [216.40.44.104]) by kanga.kvack.org (Postfix) with ESMTP id 793E16B0007 for ; Thu, 20 Feb 2020 07:27:44 -0500 (EST) Received: from smtpin15.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id E4329181AEF1D for ; Thu, 20 Feb 2020 12:27:43 +0000 (UTC) X-FDA: 76510431606.15.goat06_6086efc8bf213 X-HE-Tag: goat06_6086efc8bf213 X-Filterd-Recvd-Size: 10077 Received: from ste-pvt-msa1.bahnhof.se (ste-pvt-msa1.bahnhof.se [213.80.101.70]) by imf21.hostedemail.com (Postfix) with ESMTP for ; Thu, 20 Feb 2020 12:27:43 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by ste-pvt-msa1.bahnhof.se (Postfix) with ESMTP id 244F03F481; Thu, 20 Feb 2020 13:27:42 +0100 (CET) Authentication-Results: ste-pvt-msa1.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b=Hty0YtRG; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Received: from ste-pvt-msa1.bahnhof.se ([127.0.0.1]) by localhost (ste-pvt-msa1.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id c2VREWPuKGEt; 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 ste-pvt-msa1.bahnhof.se (Postfix) with ESMTPA id CCC133F68F; 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 2B05836051B; 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=MZsp0CT1fSNASMu9167ERGBAsKSQTexAyexHX1LllWk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Hty0YtRGsQrJy9jToFqAO7tCZAPgFitHZ+Cols04LuVee875ikM+wjQkzgR7tInP2 fFNevv77eTqPVilaA+hpWP+Izf3zKEPHydMf4dhgfNglZIA6MeBb1GGhvndXzEV7Vm 6KHJnLFV4dIf291WaA3xpxfJCg9KRl6J2E3PwMDo= 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 Cc: pv-drivers@vmware.com, linux-graphics-maintainer@vmware.com, Thomas Hellstrom , Andrew Morton , Michal Hocko , "Matthew Wilcox (Oracle)" , "Kirill A. Shutemov" , Ralph Campbell , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , =?UTF-8?q?Christian=20K=C3=B6nig?= , Dan Williams , Roland Scheidegger Subject: [PATCH v4 7/9] drm: Add a drm_get_unmapped_area() helper Date: Thu, 20 Feb 2020 13:27:17 +0100 Message-Id: <20200220122719.4302-8-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 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: Thomas Hellstrom Unaligned virtual addresses makes it unlikely that huge page-table entrie= s can be used. So align virtual buffer object address huge page boundaries to the underlying physical address huge page boundaries taking buffer object sizes into account to determine when it might be possible to use huge page-table entries. Cc: Andrew Morton Cc: Michal Hocko Cc: "Matthew Wilcox (Oracle)" Cc: "Kirill A. Shutemov" Cc: Ralph Campbell Cc: "J=C3=A9r=C3=B4me Glisse" Cc: "Christian K=C3=B6nig" Cc: Dan Williams Signed-off-by: Thomas Hellstrom Reviewed-by: Roland Scheidegger Acked-by: Christian K=C3=B6nig --- drivers/gpu/drm/drm_file.c | 136 +++++++++++++++++++++++++++++++++++++ include/drm/drm_file.h | 5 ++ 2 files changed, 141 insertions(+) diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c index 92d16724f949..40fae356d202 100644 --- a/drivers/gpu/drm/drm_file.c +++ b/drivers/gpu/drm/drm_file.c @@ -39,10 +39,13 @@ #include #include =20 +#include + #include #include #include #include +#include =20 #include "drm_crtc_internal.h" #include "drm_internal.h" @@ -796,3 +799,136 @@ struct file *mock_drm_getfile(struct drm_minor *min= or, unsigned int flags) return file; } EXPORT_SYMBOL_FOR_TESTS_ONLY(mock_drm_getfile); + +#ifdef CONFIG_TRANSPARENT_HUGEPAGE +/* + * drm_addr_inflate() attempts to construct an aligned area by inflating + * the area size and skipping the unaligned start of the area. + * adapted from shmem_get_unmapped_area() + */ +static unsigned long drm_addr_inflate(unsigned long addr, + unsigned long len, + unsigned long pgoff, + unsigned long flags, + unsigned long huge_size) +{ + unsigned long offset, inflated_len; + unsigned long inflated_addr; + unsigned long inflated_offset; + + offset =3D (pgoff << PAGE_SHIFT) & (huge_size - 1); + if (offset && offset + len < 2 * huge_size) + return addr; + if ((addr & (huge_size - 1)) =3D=3D offset) + return addr; + + inflated_len =3D len + huge_size - PAGE_SIZE; + if (inflated_len > TASK_SIZE) + return addr; + if (inflated_len < len) + return addr; + + inflated_addr =3D current->mm->get_unmapped_area(NULL, 0, inflated_len, + 0, flags); + if (IS_ERR_VALUE(inflated_addr)) + return addr; + if (inflated_addr & ~PAGE_MASK) + return addr; + + inflated_offset =3D inflated_addr & (huge_size - 1); + inflated_addr +=3D offset - inflated_offset; + if (inflated_offset > offset) + inflated_addr +=3D huge_size; + + if (inflated_addr > TASK_SIZE - len) + return addr; + + return inflated_addr; +} + +/** + * drm_get_unmapped_area() - Get an unused user-space virtual memory are= a + * suitable for huge page table entries. + * @file: The struct file representing the address space being mmap()'d. + * @uaddr: Start address suggested by user-space. + * @len: Length of the area. + * @pgoff: The page offset into the address space. + * @flags: mmap flags + * @mgr: The address space manager used by the drm driver. This argument= can + * probably be removed at some point when all drivers use the same + * address space manager. + * + * This function attempts to find an unused user-space virtual memory ar= ea + * that can accommodate the size we want to map, and that is properly + * aligned to facilitate huge page table entries matching actual + * huge pages or huge page aligned memory in buffer objects. Buffer obje= cts + * are assumed to start at huge page boundary pfns (io memory) or be + * populated by huge pages aligned to the start of the buffer object + * (system- or coherent memory). Adapted from shmem_get_unmapped_area. + * + * Return: aligned user-space address. + */ +unsigned long drm_get_unmapped_area(struct file *file, + unsigned long uaddr, unsigned long len, + unsigned long pgoff, unsigned long flags, + struct drm_vma_offset_manager *mgr) +{ + unsigned long addr; + unsigned long inflated_addr; + struct drm_vma_offset_node *node; + + if (len > TASK_SIZE) + return -ENOMEM; + + /* + * @pgoff is the file page-offset the huge page boundaries of + * which typically aligns to physical address huge page boundaries. + * That's not true for DRM, however, where physical address huge + * page boundaries instead are aligned with the offset from + * buffer object start. So adjust @pgoff to be the offset from + * buffer object start. + */ + drm_vma_offset_lock_lookup(mgr); + node =3D drm_vma_offset_lookup_locked(mgr, pgoff, 1); + if (node) + pgoff -=3D node->vm_node.start; + drm_vma_offset_unlock_lookup(mgr); + + addr =3D current->mm->get_unmapped_area(file, uaddr, len, pgoff, flags)= ; + if (IS_ERR_VALUE(addr)) + return addr; + if (addr & ~PAGE_MASK) + return addr; + if (addr > TASK_SIZE - len) + return addr; + + if (len < HPAGE_PMD_SIZE) + return addr; + if (flags & MAP_FIXED) + return addr; + /* + * Our priority is to support MAP_SHARED mapped hugely; + * and support MAP_PRIVATE mapped hugely too, until it is COWed. + * But if caller specified an address hint, respect that as before. + */ + if (uaddr) + return addr; + + inflated_addr =3D drm_addr_inflate(addr, len, pgoff, flags, + HPAGE_PMD_SIZE); + + if (IS_ENABLED(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) && + len >=3D HPAGE_PUD_SIZE) + inflated_addr =3D drm_addr_inflate(inflated_addr, len, pgoff, + flags, HPAGE_PUD_SIZE); + return inflated_addr; +} +#else /* CONFIG_TRANSPARENT_HUGEPAGE */ +unsigned long drm_get_unmapped_area(struct file *file, + unsigned long uaddr, unsigned long len, + unsigned long pgoff, unsigned long flags, + struct drm_vma_offset_manager *mgr) +{ + return current->mm->get_unmapped_area(file, uaddr, len, pgoff, flags); +} +#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ diff --git a/include/drm/drm_file.h b/include/drm/drm_file.h index 8b099b347817..06fe3da09b27 100644 --- a/include/drm/drm_file.h +++ b/include/drm/drm_file.h @@ -387,6 +387,11 @@ void drm_event_cancel_free(struct drm_device *dev, struct drm_pending_event *p); void drm_send_event_locked(struct drm_device *dev, struct drm_pending_ev= ent *e); void drm_send_event(struct drm_device *dev, struct drm_pending_event *e)= ; +struct drm_vma_offset_manager; +unsigned long drm_get_unmapped_area(struct file *file, + unsigned long uaddr, unsigned long len, + unsigned long pgoff, unsigned long flags, + struct drm_vma_offset_manager *mgr); =20 struct file *mock_drm_getfile(struct drm_minor *minor, unsigned int flag= s); =20 --=20 2.21.1