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 07274C11D04 for ; Thu, 20 Feb 2020 12:27:43 +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 9C4F424656 for ; Thu, 20 Feb 2020 12:27:42 +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="Ra2U7KTB" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9C4F424656 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 0BDF86E8E9; Thu, 20 Feb 2020 12:27:42 +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 10A5F6E200 for ; Thu, 20 Feb 2020 12:27:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by ste-pvt-msa2.bahnhof.se (Postfix) with ESMTP id 730133F3EC; Thu, 20 Feb 2020 13:27:39 +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=Ra2U7KTB; 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 H1dqCdNHo3ZM; Thu, 20 Feb 2020 13:27:38 +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 03B253F3A8; Thu, 20 Feb 2020 13:27:37 +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 04B3F36050D; 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=64mAbjX11EJRavK+mR6T3m6NRmUWJ8BVZd3EsJB0Qx0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ra2U7KTBmcqtvcddSfuGp21zhhYIGhuBGQls8x0N9bU12d0re3mCfkIkNg12Myo+B dIesvay4JHuauwSJN8O/QKDJZBto0U1lPeco7409QcpDys5fH02FWn0WyicGiID7e9 29aYvFRhH/r/B9DchtajEfgDDmHf7Q7CMJu/ybDg= 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 6/9] drm/vmwgfx: Support huge page faults Date: Thu, 20 Feb 2020 13:27:16 +0100 Message-Id: <20200220122719.4302-7-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" RnJvbTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgoKV2l0aCB2bXdn ZnggZGlydHktdHJhY2tpbmcgd2UgbmVlZCBhIHNwZWNpYWxpemVkIGh1Z2VfZmF1bHQKY2FsbGJh Y2suIEltcGxlbWVudCBhbmQgaG9vayBpdCB1cC4KCkNjOiBBbmRyZXcgTW9ydG9uIDxha3BtQGxp bnV4LWZvdW5kYXRpb24ub3JnPgpDYzogTWljaGFsIEhvY2tvIDxtaG9ja29Ac3VzZS5jb20+CkNj OiAiTWF0dGhldyBXaWxjb3ggKE9yYWNsZSkiIDx3aWxseUBpbmZyYWRlYWQub3JnPgpDYzogIktp cmlsbCBBLiBTaHV0ZW1vdiIgPGtpcmlsbC5zaHV0ZW1vdkBsaW51eC5pbnRlbC5jb20+CkNjOiBS YWxwaCBDYW1wYmVsbCA8cmNhbXBiZWxsQG52aWRpYS5jb20+CkNjOiAiSsOpcsO0bWUgR2xpc3Nl IiA8amdsaXNzZUByZWRoYXQuY29tPgpDYzogIkNocmlzdGlhbiBLw7ZuaWciIDxjaHJpc3RpYW4u a29lbmlnQGFtZC5jb20+CkNjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNv bT4KU2lnbmVkLW9mZi1ieTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29t PgpSZXZpZXdlZC1ieTogUm9sYW5kIFNjaGVpZGVnZ2VyIDxzcm9sYW5kQHZtd2FyZS5jb20+CkFj a2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmggICAgICAgIHwgIDQgKysKIGRyaXZl cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYyB8IDc0ICsrKysrKysrKysrKysr KysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3R0bV9nbHVlLmMgICB8ICA1 ICstCiAzIGZpbGVzIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAppbmRleCBhMzFlNzI2ZDZkNzEuLjgyZDg2ZjJk MjU2OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKQEAgLTE0MjgsNiArMTQyOCwx MCBAQCB2b2lkIHZtd19ib19kaXJ0eV91bm1hcChzdHJ1Y3Qgdm13X2J1ZmZlcl9vYmplY3QgKnZi bywKIAkJCXBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgZW5kKTsKIHZtX2ZhdWx0X3Qgdm13X2JvX3Zt X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKTsKIHZtX2ZhdWx0X3Qgdm13X2JvX3ZtX21rd3Jp dGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpOworI2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdF UEFHRQordm1fZmF1bHRfdCB2bXdfYm9fdm1faHVnZV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZt ZiwKKwkJCQllbnVtIHBhZ2VfZW50cnlfc2l6ZSBwZV9zaXplKTsKKyNlbmRpZgogCiAvKioKICAq IFZNV19ERUJVR19LTVMgLSBEZWJ1ZyBvdXRwdXQgZm9yIGtlcm5lbCBtb2RlLXNldHRpbmcKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYyBiL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYwppbmRleCAxN2E1ZGNhN2I5 MjEuLmNkZTNlMDdlYmFmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfcGFnZV9kaXJ0eS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2Vf ZGlydHkuYwpAQCAtNDczLDcgKzQ3Myw3IEBAIHZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2ZhdWx0KHN0 cnVjdCB2bV9mYXVsdCAqdm1mKQogCSAqIGEgbG90IG9mIHVubmVjZXNzYXJ5IHdyaXRlIGZhdWx0 cy4KIAkgKi8KIAlpZiAodmJvLT5kaXJ0eSAmJiB2Ym8tPmRpcnR5LT5tZXRob2QgPT0gVk1XX0JP X0RJUlRZX01LV1JJVEUpCi0JCXByb3QgPSB2bWEtPnZtX3BhZ2VfcHJvdDsKKwkJcHJvdCA9IHZt X2dldF9wYWdlX3Byb3Qodm1hLT52bV9mbGFncyAmIH5WTV9TSEFSRUQpOwogCWVsc2UKIAkJcHJv dCA9IHZtX2dldF9wYWdlX3Byb3Qodm1hLT52bV9mbGFncyk7CiAKQEAgLTQ4NiwzICs0ODYsNzUg QEAgdm1fZmF1bHRfdCB2bXdfYm9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAKIAly ZXR1cm4gcmV0OwogfQorCisjaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFCit2bV9m YXVsdF90IHZtd19ib192bV9odWdlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLAorCQkJCWVu dW0gcGFnZV9lbnRyeV9zaXplIHBlX3NpemUpCit7CisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEgPSB2bWYtPnZtYTsKKwlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gKHN0cnVjdCB0 dG1fYnVmZmVyX29iamVjdCAqKQorCSAgICB2bWEtPnZtX3ByaXZhdGVfZGF0YTsKKwlzdHJ1Y3Qg dm13X2J1ZmZlcl9vYmplY3QgKnZibyA9CisJCWNvbnRhaW5lcl9vZihibywgc3RydWN0IHZtd19i dWZmZXJfb2JqZWN0LCBiYXNlKTsKKwlwZ3Byb3RfdCBwcm90OworCXZtX2ZhdWx0X3QgcmV0Owor CXBnb2ZmX3QgZmF1bHRfcGFnZV9zaXplOworCWJvb2wgd3JpdGUgPSB2bWYtPmZsYWdzICYgRkFV TFRfRkxBR19XUklURTsKKwlib29sIGlzX2Nvd19tYXBwaW5nID0KKwkJKHZtYS0+dm1fZmxhZ3Mg JiAoVk1fU0hBUkVEIHwgVk1fTUFZV1JJVEUpKSA9PSBWTV9NQVlXUklURTsKKworCXN3aXRjaCAo cGVfc2l6ZSkgeworCWNhc2UgUEVfU0laRV9QTUQ6CisJCWZhdWx0X3BhZ2Vfc2l6ZSA9IEhQQUdF X1BNRF9TSVpFID4+IFBBR0VfU0hJRlQ7CisJCWJyZWFrOworI2lmZGVmIENPTkZJR19IQVZFX0FS Q0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVECisJY2FzZSBQRV9TSVpFX1BVRDoKKwkJZmF1bHRf cGFnZV9zaXplID0gSFBBR0VfUFVEX1NJWkUgPj4gUEFHRV9TSElGVDsKKwkJYnJlYWs7CisjZW5k aWYKKwlkZWZhdWx0OgorCQlXQVJOX09OX09OQ0UoMSk7CisJCXJldHVybiBWTV9GQVVMVF9GQUxM QkFDSzsKKwl9CisKKwkvKiBBbHdheXMgZG8gd3JpdGUgZGlydHktdHJhY2tpbmcgYW5kIENPVyBv biBQVEUgbGV2ZWwuICovCisJaWYgKHdyaXRlICYmIChSRUFEX09OQ0UodmJvLT5kaXJ0eSkgfHwg aXNfY293X21hcHBpbmcpKQorCQlyZXR1cm4gVk1fRkFVTFRfRkFMTEJBQ0s7CisKKwlyZXQgPSB0 dG1fYm9fdm1fcmVzZXJ2ZShibywgdm1mKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJ aWYgKHZiby0+ZGlydHkpIHsKKwkJcGdvZmZfdCBhbGxvd2VkX3ByZWZhdWx0OworCQl1bnNpZ25l ZCBsb25nIHBhZ2Vfb2Zmc2V0OworCisJCXBhZ2Vfb2Zmc2V0ID0gdm1mLT5wZ29mZiAtCisJCQlk cm1fdm1hX25vZGVfc3RhcnQoJmJvLT5iYXNlLnZtYV9ub2RlKTsKKwkJaWYgKHBhZ2Vfb2Zmc2V0 ID49IGJvLT5udW1fcGFnZXMgfHwKKwkJICAgIHZtd19yZXNvdXJjZXNfY2xlYW4odmJvLCBwYWdl X29mZnNldCwKKwkJCQkJcGFnZV9vZmZzZXQgKyBQQUdFX1NJWkUsCisJCQkJCSZhbGxvd2VkX3By ZWZhdWx0KSkgeworCQkJcmV0ID0gVk1fRkFVTFRfU0lHQlVTOworCQkJZ290byBvdXRfdW5sb2Nr OworCQl9CisKKwkJLyoKKwkJICogV3JpdGUgcHJvdGVjdCwgc28gd2UgZ2V0IGEgbmV3IGZhdWx0 IG9uIHdyaXRlLCBhbmQgY2FuCisJCSAqIHNwbGl0LgorCQkgKi8KKwkJcHJvdCA9IHZtX2dldF9w YWdlX3Byb3Qodm1hLT52bV9mbGFncyAmIH5WTV9TSEFSRUQpOworCX0gZWxzZSB7CisJCXByb3Qg PSB2bV9nZXRfcGFnZV9wcm90KHZtYS0+dm1fZmxhZ3MpOworCX0KKworCXJldCA9IHR0bV9ib192 bV9mYXVsdF9yZXNlcnZlZCh2bWYsIHByb3QsIDEsIGZhdWx0X3BhZ2Vfc2l6ZSk7CisJaWYgKHJl dCA9PSBWTV9GQVVMVF9SRVRSWSAmJiAhKHZtZi0+ZmxhZ3MgJiBGQVVMVF9GTEFHX1JFVFJZX05P V0FJVCkpCisJCXJldHVybiByZXQ7CisKK291dF91bmxvY2s6CisJZG1hX3Jlc3ZfdW5sb2NrKGJv LT5iYXNlLnJlc3YpOworCisJcmV0dXJuIHJldDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdHRtX2dsdWUuYyBiL2RyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X3R0bV9nbHVlLmMKaW5kZXggY2UyODg3NTY1MzFiLi4zNDEwMGQxZjVhOWQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3R0bV9nbHVlLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdHRtX2dsdWUuYwpAQCAtMzQsNyArMzQs MTAgQEAgaW50IHZtd19tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKnZtYSkKIAkJLnBhZ2VfbWt3cml0ZSA9IHZtd19ib192bV9ta3dyaXRlLAogCQkuZmF1bHQg PSB2bXdfYm9fdm1fZmF1bHQsCiAJCS5vcGVuID0gdHRtX2JvX3ZtX29wZW4sCi0JCS5jbG9zZSA9 IHR0bV9ib192bV9jbG9zZQorCQkuY2xvc2UgPSB0dG1fYm9fdm1fY2xvc2UsCisjaWZkZWYgQ09O RklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFCisJCS5odWdlX2ZhdWx0ID0gdm13X2JvX3ZtX2h1Z2Vf ZmF1bHQsCisjZW5kaWYKIAl9OwogCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2ID0gZmlscC0+ cHJpdmF0ZV9kYXRhOwogCXN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYgPSB2bXdfcHJpdihm aWxlX3ByaXYtPm1pbm9yLT5kZXYpOwotLSAKMi4yMS4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK 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 5A6E6C11D11 for ; Thu, 20 Feb 2020 12:27:59 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 0DD0524682 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="Ra2U7KTB" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0DD0524682 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 CAF086B0007; Thu, 20 Feb 2020 07:27:44 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 93B2E6B0037; 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 199BF6B000E; Thu, 20 Feb 2020 07:27:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0218.hostedemail.com [216.40.44.218]) by kanga.kvack.org (Postfix) with ESMTP id B3CD36B0036 for ; Thu, 20 Feb 2020 07:27:43 -0500 (EST) Received: from smtpin17.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 346808248047 for ; Thu, 20 Feb 2020 12:27:43 +0000 (UTC) X-FDA: 76510431606.17.show74_602cd69e6ab54 X-HE-Tag: show74_602cd69e6ab54 X-Filterd-Recvd-Size: 7963 Received: from ste-pvt-msa2.bahnhof.se (ste-pvt-msa2.bahnhof.se [213.80.101.71]) by imf34.hostedemail.com (Postfix) with ESMTP for ; Thu, 20 Feb 2020 12:27:40 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by ste-pvt-msa2.bahnhof.se (Postfix) with ESMTP id 730133F3EC; Thu, 20 Feb 2020 13:27:39 +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=Ra2U7KTB; 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 H1dqCdNHo3ZM; Thu, 20 Feb 2020 13:27:38 +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 03B253F3A8; Thu, 20 Feb 2020 13:27:37 +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 04B3F36050D; 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=64mAbjX11EJRavK+mR6T3m6NRmUWJ8BVZd3EsJB0Qx0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ra2U7KTBmcqtvcddSfuGp21zhhYIGhuBGQls8x0N9bU12d0re3mCfkIkNg12Myo+B dIesvay4JHuauwSJN8O/QKDJZBto0U1lPeco7409QcpDys5fH02FWn0WyicGiID7e9 29aYvFRhH/r/B9DchtajEfgDDmHf7Q7CMJu/ybDg= 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 6/9] drm/vmwgfx: Support huge page faults Date: Thu, 20 Feb 2020 13:27:16 +0100 Message-Id: <20200220122719.4302-7-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 With vmwgfx dirty-tracking we need a specialized huge_fault callback. Implement and hook it up. 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/vmwgfx/vmwgfx_drv.h | 4 ++ drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c | 74 +++++++++++++++++++++- drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c | 5 +- 3 files changed, 81 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx= /vmwgfx_drv.h index a31e726d6d71..82d86f2d2569 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h @@ -1428,6 +1428,10 @@ void vmw_bo_dirty_unmap(struct vmw_buffer_object *= vbo, pgoff_t start, pgoff_t end); vm_fault_t vmw_bo_vm_fault(struct vm_fault *vmf); vm_fault_t vmw_bo_vm_mkwrite(struct vm_fault *vmf); +#ifdef CONFIG_TRANSPARENT_HUGEPAGE +vm_fault_t vmw_bo_vm_huge_fault(struct vm_fault *vmf, + enum page_entry_size pe_size); +#endif =20 /** * VMW_DEBUG_KMS - Debug output for kernel mode-setting diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c b/drivers/gpu/drm= /vmwgfx/vmwgfx_page_dirty.c index 17a5dca7b921..cde3e07ebaf7 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c @@ -473,7 +473,7 @@ vm_fault_t vmw_bo_vm_fault(struct vm_fault *vmf) * a lot of unnecessary write faults. */ if (vbo->dirty && vbo->dirty->method =3D=3D VMW_BO_DIRTY_MKWRITE) - prot =3D vma->vm_page_prot; + prot =3D vm_get_page_prot(vma->vm_flags & ~VM_SHARED); else prot =3D vm_get_page_prot(vma->vm_flags); =20 @@ -486,3 +486,75 @@ vm_fault_t vmw_bo_vm_fault(struct vm_fault *vmf) =20 return ret; } + +#ifdef CONFIG_TRANSPARENT_HUGEPAGE +vm_fault_t vmw_bo_vm_huge_fault(struct vm_fault *vmf, + enum page_entry_size pe_size) +{ + struct vm_area_struct *vma =3D vmf->vma; + struct ttm_buffer_object *bo =3D (struct ttm_buffer_object *) + vma->vm_private_data; + struct vmw_buffer_object *vbo =3D + container_of(bo, struct vmw_buffer_object, base); + pgprot_t prot; + vm_fault_t ret; + pgoff_t fault_page_size; + bool write =3D vmf->flags & FAULT_FLAG_WRITE; + bool is_cow_mapping =3D + (vma->vm_flags & (VM_SHARED | VM_MAYWRITE)) =3D=3D VM_MAYWRITE; + + switch (pe_size) { + case PE_SIZE_PMD: + fault_page_size =3D HPAGE_PMD_SIZE >> PAGE_SHIFT; + break; +#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD + case PE_SIZE_PUD: + fault_page_size =3D HPAGE_PUD_SIZE >> PAGE_SHIFT; + break; +#endif + default: + WARN_ON_ONCE(1); + return VM_FAULT_FALLBACK; + } + + /* Always do write dirty-tracking and COW on PTE level. */ + if (write && (READ_ONCE(vbo->dirty) || is_cow_mapping)) + return VM_FAULT_FALLBACK; + + ret =3D ttm_bo_vm_reserve(bo, vmf); + if (ret) + return ret; + + if (vbo->dirty) { + pgoff_t allowed_prefault; + unsigned long page_offset; + + page_offset =3D vmf->pgoff - + drm_vma_node_start(&bo->base.vma_node); + if (page_offset >=3D bo->num_pages || + vmw_resources_clean(vbo, page_offset, + page_offset + PAGE_SIZE, + &allowed_prefault)) { + ret =3D VM_FAULT_SIGBUS; + goto out_unlock; + } + + /* + * Write protect, so we get a new fault on write, and can + * split. + */ + prot =3D vm_get_page_prot(vma->vm_flags & ~VM_SHARED); + } else { + prot =3D vm_get_page_prot(vma->vm_flags); + } + + ret =3D ttm_bo_vm_fault_reserved(vmf, prot, 1, fault_page_size); + if (ret =3D=3D VM_FAULT_RETRY && !(vmf->flags & FAULT_FLAG_RETRY_NOWAIT= )) + return ret; + +out_unlock: + dma_resv_unlock(bo->base.resv); + + return ret; +} +#endif diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c b/drivers/gpu/drm/v= mwgfx/vmwgfx_ttm_glue.c index ce288756531b..34100d1f5a9d 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c @@ -34,7 +34,10 @@ int vmw_mmap(struct file *filp, struct vm_area_struct = *vma) .page_mkwrite =3D vmw_bo_vm_mkwrite, .fault =3D vmw_bo_vm_fault, .open =3D ttm_bo_vm_open, - .close =3D ttm_bo_vm_close + .close =3D ttm_bo_vm_close, +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + .huge_fault =3D vmw_bo_vm_huge_fault, +#endif }; struct drm_file *file_priv =3D filp->private_data; struct vmw_private *dev_priv =3D vmw_priv(file_priv->minor->dev); --=20 2.21.1