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 C80B6C11D04 for ; Thu, 20 Feb 2020 12:27:47 +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 9CF6B24673 for ; Thu, 20 Feb 2020 12:27:47 +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="EsL3zqsY" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9CF6B24673 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 785FE6E200; Thu, 20 Feb 2020 12:27:44 +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 DAD6A6E200 for ; Thu, 20 Feb 2020 12:27:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by pio-pvt-msa3.bahnhof.se (Postfix) with ESMTP id 24DBF3F401; Thu, 20 Feb 2020 13:27:40 +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=EsL3zqsY; 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 AKgQQuC0Bh89; 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 E9AAE3F32A; Thu, 20 Feb 2020 13:27:34 +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 861AE360476; Thu, 20 Feb 2020 13:27:34 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1582201654; bh=I4dTEA5C4I3JwRk7pTpNlz2a8W6Im6M0WNPnyIsfSGY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EsL3zqsYTubFEI86dJ/b9vOJiUfulEgyqRrN7suvJPPKGOO7l03gsDYKOTqLT3Jnw TIk6LJ5EznLO0Ily4N7ly1LqC3qvl5uGemdHNBL5klRshKdhwRVvEgw+CYb/qgT1ui R5xSQRigEHw2c/bTIIuxoLLi/90XBMEpR1TW/T6c= 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 3/9] mm: Split huge pages on write-notify or COW Date: Thu, 20 Feb 2020 13:27:13 +0100 Message-Id: <20200220122719.4302-4-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, 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" RnJvbTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgoKV2UgY3VycmVu dGx5IG9ubHkgZG8gQ09XIGFuZCB3cml0ZS1ub3RpZnkgb24gdGhlIFBURSBsZXZlbCwgc28gaWYg dGhlCmh1Z2VfZmF1bHQoKSBoYW5kbGVyIHJldHVybnMgVk1fRkFVTFRfRkFMTEJBQ0sgb24gd3Ag ZmF1bHRzLApzcGxpdCB0aGUgaHVnZSBwYWdlcyBhbmQgcGFnZS10YWJsZSBlbnRyaWVzLiBBbHNv IGRvIHRoaXMgZm9yIGh1Z2UgUFVEcwppZiB0aGVyZSBpcyBubyBodWdlX2ZhdWx0KCkgaGFuZGxl ciBhbmQgdGhlIHZtYSBpcyBub3QgYW5vbnltb3VzLCBzaW1pbGFyCnRvIGhvdyBpdCdzIGRvbmUg Zm9yIFBNRHMuCgpOb3RlIHRoYXQgZnMvZGF4LmMgZG9lcyB0aGUgc3BsaXR0aW5nIGluIHRoZSBo dWdlX2ZhdWx0KCkgaGFuZGxlciwgYnV0IGFzCmh1Z2VfZmF1bHQoKSBpcyBpbXBsZW1lbnRlZCBi eSBtb2R1bGVzIHdlIG5lZWQgdG8gY29uc2lkZXIgd2hldGhlciB0bwpleHBvcnQgdGhlIHNwbGl0 dGluZyBmdW5jdGlvbnMgZm9yIHVzZSBpbiB0aGUgbW9kdWxlcyBvciB3aGV0aGVyIHRvIHRyeQp0 byBrZWVwIGNhbGxzIGluIHRoZSBjb3JlLiBPcHQgZm9yIHRoZSBsYXR0ZXIuIEEgZm9sbG93LXVw IHBhdGNoIGNhbgpyZW1vdmUgdGhlIGRheC5jIHNwbGl0X2h1Z2VfcG1kKCkgaWYgbmVlZGVkLgoK Q2M6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CkNjOiBNaWNoYWwg SG9ja28gPG1ob2Nrb0BzdXNlLmNvbT4KQ2M6ICJNYXR0aGV3IFdpbGNveCAoT3JhY2xlKSIgPHdp bGx5QGluZnJhZGVhZC5vcmc+CkNjOiAiS2lyaWxsIEEuIFNodXRlbW92IiA8a2lyaWxsLnNodXRl bW92QGxpbnV4LmludGVsLmNvbT4KQ2M6IFJhbHBoIENhbXBiZWxsIDxyY2FtcGJlbGxAbnZpZGlh LmNvbT4KQ2M6ICJKw6lyw7RtZSBHbGlzc2UiIDxqZ2xpc3NlQHJlZGhhdC5jb20+CkNjOiAiQ2hy aXN0aWFuIEvDtm5pZyIgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KQ2M6IERhbiBXaWxsaWFt cyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgSGVsbHN0 cm9tIDx0aGVsbHN0cm9tQHZtd2FyZS5jb20+CkFja2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxj aHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Ci0tLQogbW0vbWVtb3J5LmMgfCAyNyArKysrKysrKysr KysrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKaW5kZXgg MTdhYWRjNzUxZTVjLi40YzQ5ZmU5NjNlNWMgMTAwNjQ0Ci0tLSBhL21tL21lbW9yeS5jCisrKyBi L21tL21lbW9yeS5jCkBAIC0zODgwLDExICszODgwLDE0IEBAIHN0YXRpYyBpbmxpbmUgdm1fZmF1 bHRfdCB3cF9odWdlX3BtZChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgcG1kX3Qgb3JpZ19wbWQpCiB7 CiAJaWYgKHZtYV9pc19hbm9ueW1vdXModm1mLT52bWEpKQogCQlyZXR1cm4gZG9faHVnZV9wbWRf d3BfcGFnZSh2bWYsIG9yaWdfcG1kKTsKLQlpZiAodm1mLT52bWEtPnZtX29wcy0+aHVnZV9mYXVs dCkKLQkJcmV0dXJuIHZtZi0+dm1hLT52bV9vcHMtPmh1Z2VfZmF1bHQodm1mLCBQRV9TSVpFX1BN RCk7CisJaWYgKHZtZi0+dm1hLT52bV9vcHMtPmh1Z2VfZmF1bHQpIHsKKwkJdm1fZmF1bHRfdCBy ZXQgPSB2bWYtPnZtYS0+dm1fb3BzLT5odWdlX2ZhdWx0KHZtZiwgUEVfU0laRV9QTUQpOwogCi0J LyogQ09XIGhhbmRsZWQgb24gcHRlIGxldmVsOiBzcGxpdCBwbWQgKi8KLQlWTV9CVUdfT05fVk1B KHZtZi0+dm1hLT52bV9mbGFncyAmIFZNX1NIQVJFRCwgdm1mLT52bWEpOworCQlpZiAoIShyZXQg JiBWTV9GQVVMVF9GQUxMQkFDSykpCisJCQlyZXR1cm4gcmV0OworCX0KKworCS8qIENPVyBvciB3 cml0ZS1ub3RpZnkgaGFuZGxlZCBvbiBwdGUgbGV2ZWw6IHNwbGl0IHBtZC4gKi8KIAlfX3NwbGl0 X2h1Z2VfcG1kKHZtZi0+dm1hLCB2bWYtPnBtZCwgdm1mLT5hZGRyZXNzLCBmYWxzZSwgTlVMTCk7 CiAKIAlyZXR1cm4gVk1fRkFVTFRfRkFMTEJBQ0s7CkBAIC0zODk3LDEyICszOTAwLDIwIEBAIHN0 YXRpYyBpbmxpbmUgYm9vbCB2bWFfaXNfYWNjZXNzaWJsZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSkKIAogc3RhdGljIHZtX2ZhdWx0X3QgY3JlYXRlX2h1Z2VfcHVkKHN0cnVjdCB2bV9mYXVs dCAqdm1mKQogewotI2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRQorI2lmIGRlZmlu ZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSAmJgkJCVwKKwlkZWZpbmVkKENPTkZJR19I QVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVEKQogCS8qIE5vIHN1cHBvcnQgZm9yIGFu b255bW91cyB0cmFuc3BhcmVudCBQVUQgcGFnZXMgeWV0ICovCiAJaWYgKHZtYV9pc19hbm9ueW1v dXModm1mLT52bWEpKQotCQlyZXR1cm4gVk1fRkFVTFRfRkFMTEJBQ0s7Ci0JaWYgKHZtZi0+dm1h LT52bV9vcHMtPmh1Z2VfZmF1bHQpCi0JCXJldHVybiB2bWYtPnZtYS0+dm1fb3BzLT5odWdlX2Zh dWx0KHZtZiwgUEVfU0laRV9QVUQpOworCQlnb3RvIHNwbGl0OworCWlmICh2bWYtPnZtYS0+dm1f b3BzLT5odWdlX2ZhdWx0KSB7CisJCXZtX2ZhdWx0X3QgcmV0ID0gdm1mLT52bWEtPnZtX29wcy0+ aHVnZV9mYXVsdCh2bWYsIFBFX1NJWkVfUFVEKTsKKworCQlpZiAoIShyZXQgJiBWTV9GQVVMVF9G QUxMQkFDSykpCisJCQlyZXR1cm4gcmV0OworCX0KK3NwbGl0OgorCS8qIENPVyBvciB3cml0ZS1u b3RpZnkgbm90IGhhbmRsZWQgb24gUFVEIGxldmVsOiBzcGxpdCBwdWQuKi8KKwlfX3NwbGl0X2h1 Z2VfcHVkKHZtZi0+dm1hLCB2bWYtPnB1ZCwgdm1mLT5hZGRyZXNzKTsKICNlbmRpZiAvKiBDT05G SUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UgKi8KIAlyZXR1cm4gVk1fRkFVTFRfRkFMTEJBQ0s7CiB9 Ci0tIAoyLjIxLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo= 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 3F445C11D0C for ; Thu, 20 Feb 2020 12:27:49 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D52ED24656 for ; Thu, 20 Feb 2020 12:27:48 +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="EsL3zqsY" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D52ED24656 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 E501D6B0032; Thu, 20 Feb 2020 07:27:43 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D80E66B0007; Thu, 20 Feb 2020 07:27:43 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9D5A86B0032; Thu, 20 Feb 2020 07:27:43 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0043.hostedemail.com [216.40.44.43]) by kanga.kvack.org (Postfix) with ESMTP id 600776B000D for ; Thu, 20 Feb 2020 07:27:43 -0500 (EST) Received: from smtpin22.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id DCAFE824805A for ; Thu, 20 Feb 2020 12:27:42 +0000 (UTC) X-FDA: 76510431564.22.bite40_603cd3c77d65f X-HE-Tag: bite40_603cd3c77d65f X-Filterd-Recvd-Size: 6014 Received: from pio-pvt-msa3.bahnhof.se (pio-pvt-msa3.bahnhof.se [79.136.2.42]) by imf45.hostedemail.com (Postfix) with ESMTP for ; Thu, 20 Feb 2020 12:27:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by pio-pvt-msa3.bahnhof.se (Postfix) with ESMTP id 24DBF3F401; Thu, 20 Feb 2020 13:27:40 +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=EsL3zqsY; 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 AKgQQuC0Bh89; 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 E9AAE3F32A; Thu, 20 Feb 2020 13:27:34 +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 861AE360476; Thu, 20 Feb 2020 13:27:34 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1582201654; bh=I4dTEA5C4I3JwRk7pTpNlz2a8W6Im6M0WNPnyIsfSGY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EsL3zqsYTubFEI86dJ/b9vOJiUfulEgyqRrN7suvJPPKGOO7l03gsDYKOTqLT3Jnw TIk6LJ5EznLO0Ily4N7ly1LqC3qvl5uGemdHNBL5klRshKdhwRVvEgw+CYb/qgT1ui R5xSQRigEHw2c/bTIIuxoLLi/90XBMEpR1TW/T6c= 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 Subject: [PATCH v4 3/9] mm: Split huge pages on write-notify or COW Date: Thu, 20 Feb 2020 13:27:13 +0100 Message-Id: <20200220122719.4302-4-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 We currently only do COW and write-notify on the PTE level, so if the huge_fault() handler returns VM_FAULT_FALLBACK on wp faults, split the huge pages and page-table entries. Also do this for huge PUDs if there is no huge_fault() handler and the vma is not anonymous, similar to how it's done for PMDs. Note that fs/dax.c does the splitting in the huge_fault() handler, but as huge_fault() is implemented by modules we need to consider whether to export the splitting functions for use in the modules or whether to try to keep calls in the core. Opt for the latter. A follow-up patch can remove the dax.c split_huge_pmd() if needed. 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 Acked-by: Christian K=C3=B6nig --- mm/memory.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 17aadc751e5c..4c49fe963e5c 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3880,11 +3880,14 @@ static inline vm_fault_t wp_huge_pmd(struct vm_fa= ult *vmf, pmd_t orig_pmd) { if (vma_is_anonymous(vmf->vma)) return do_huge_pmd_wp_page(vmf, orig_pmd); - if (vmf->vma->vm_ops->huge_fault) - return vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PMD); + if (vmf->vma->vm_ops->huge_fault) { + vm_fault_t ret =3D vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PMD); =20 - /* COW handled on pte level: split pmd */ - VM_BUG_ON_VMA(vmf->vma->vm_flags & VM_SHARED, vmf->vma); + if (!(ret & VM_FAULT_FALLBACK)) + return ret; + } + + /* COW or write-notify handled on pte level: split pmd. */ __split_huge_pmd(vmf->vma, vmf->pmd, vmf->address, false, NULL); =20 return VM_FAULT_FALLBACK; @@ -3897,12 +3900,20 @@ static inline bool vma_is_accessible(struct vm_ar= ea_struct *vma) =20 static vm_fault_t create_huge_pud(struct vm_fault *vmf) { -#ifdef CONFIG_TRANSPARENT_HUGEPAGE +#if defined(CONFIG_TRANSPARENT_HUGEPAGE) && \ + defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) /* No support for anonymous transparent PUD pages yet */ if (vma_is_anonymous(vmf->vma)) - return VM_FAULT_FALLBACK; - if (vmf->vma->vm_ops->huge_fault) - return vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PUD); + goto split; + if (vmf->vma->vm_ops->huge_fault) { + vm_fault_t ret =3D vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PUD); + + if (!(ret & VM_FAULT_FALLBACK)) + return ret; + } +split: + /* COW or write-notify not handled on PUD level: split pud.*/ + __split_huge_pud(vmf->vma, vmf->pud, vmf->address); #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ return VM_FAULT_FALLBACK; } --=20 2.21.1