From nobody Sun Feb 8 09:13:17 2026 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 80C5813667B for ; Tue, 20 Feb 2024 23:17:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708471077; cv=none; b=Z1tbDA/ev1FR5hxtDh/VNMZeOst5o4gOVTXJk/gxz5iBQHm3dY1oR46ktQGThDwMBZUF+5gNC3/RlzTlBt4o54LuDjsRWue4g5DstWRXx7WbIZAo4oeXze8k/Y4gfQ/cb8hqmC+PSMu3vWGENNblTgPD3Y9nVKy9gjITwUmG3kE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708471077; c=relaxed/simple; bh=yqsbw6iQdZTVB2cYQu2elIu0K2UeUBgcZazLloZTOHE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z7IROXxa45S5Gfl+mMb38vWEC6nXdyMuyelRdkKOYmJclpi1iSr1mG59TteiTgbnLbvmua+8a9RU60iqH40D7Gt+aO1HokebPOeT5Zdj34E6Tk1hc85pC5Qg6BgPkyWlSFhh5QVRyxV/2BuP3Z+KR8LF6hS3eTIcmf2W5YqcKWU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mQLaX7vl; arc=none smtp.client-ip=209.85.210.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mQLaX7vl" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-6e43ee3f6fbso3045810b3a.3 for ; Tue, 20 Feb 2024 15:17:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708471076; x=1709075876; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BBH3LTjaBMSoYxUwPuTSep1EAb5H3OicE1Nmx6szstY=; b=mQLaX7vlg2cyb+ishtPrBoSFpqrI2WwABZ8omrC5LJya8fwbfPtMou4MGa9s++ksHn PoCuDEE1ffL5DKxDDzGq/4eaTqznhldh8CckBrs0Xx8vnO6/LM74SSqO+piqULGD3PRW o+DiP+0lENwhzYq08Qqru3svzF9vZJcP2BU8D47Ww0c1VO5UnXPu1OXP2Tz1FC4VRgUX jQHQxVJ8JuZWpsCo92xE8vjWvHRh9LiUyteK/tR5I63CK3GobVgxiEJ+sCtCHb6SEFEw b9/F6GZKqiTUHAsOGTcugi/pLbAn1mWvp/qdEJ11l26lOtEtKpPfPIqydOX7HBAX0fG+ rwEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708471076; x=1709075876; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BBH3LTjaBMSoYxUwPuTSep1EAb5H3OicE1Nmx6szstY=; b=CLglZ9eeYuI/Jx/GsDalFcGMNdCUu1Vea+FQVPC7myfS4jDijn5UI8gZEM5QwKTjmG zrsYxVj8RVYXFli6sgnae9kS+kLVTYo9/4mR9IfylroKykBu9gYiIGYR4B+VInWZtwF7 gZuknv+Ash4ua/J+cOxjsy2gVA723WZ00mYRlqWGZZ4Qjwy5UDO21q8uSVnWzWTNR/H2 w5Vs/E1HBf9iOqjpd3eqe5tg0dpNtIgrH8gl77WhrZ5Za2uBF7XjzOrER7gjvcxOo1S4 8hS9fVHYLdFTX5aO/o25I0m4ILuDbdlpXBYagOXyI1A67dFGIHYEFogz/ZnsikxiwlGH Sp0g== X-Gm-Message-State: AOJu0Yzx/z0o7F4FgkfbXi516MQfv8EBjYseUja9EX//G7F/YS0WNfLI btMIVdGXFHYVj7OL7nYpXh+9zCb4/HVkI/Rg47NmQn2tuWxwF627 X-Google-Smtp-Source: AGHT+IFeVa9iBxvsSpbEiIeYAtJicngo1Z4fESwQ2XBwkVGNXaE9jzVuGxav+9PKFoCevZ1IULDQ/Q== X-Received: by 2002:a62:c312:0:b0:6e1:338d:e01c with SMTP id v18-20020a62c312000000b006e1338de01cmr13801818pfg.1.1708471075876; Tue, 20 Feb 2024 15:17:55 -0800 (PST) Received: from fedora.. (c-73-170-51-167.hsd1.ca.comcast.net. [73.170.51.167]) by smtp.googlemail.com with ESMTPSA id x16-20020aa784d0000000b006e13a5ab1e5sm5317803pfn.73.2024.02.20.15.17.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Feb 2024 15:17:55 -0800 (PST) From: "Vishal Moola (Oracle)" To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, akpm@linux-foundation.org, muchun.song@linux.dev, "Vishal Moola (Oracle)" Subject: [PATCH 1/3] mm/memory: Change vmf_anon_prepare() to be non-static Date: Tue, 20 Feb 2024 15:14:22 -0800 Message-ID: <20240220231424.126600-2-vishal.moola@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240220231424.126600-1-vishal.moola@gmail.com> References: <20240220231424.126600-1-vishal.moola@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In order to handle hugetlb faults under the VMA lock, hugetlb can use vmf_anon_prepare() to ensure we can safely prepare an anon_vma. Change it to be a non-static function so it can be used within hugetlb as well. Signed-off-by: Vishal Moola (Oracle) --- include/linux/hugetlb.h | 1 + mm/memory.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index c1ee640d87b1..9b45edb6e303 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -272,6 +272,7 @@ void hugetlb_vma_unlock_write(struct vm_area_struct *vm= a); int hugetlb_vma_trylock_write(struct vm_area_struct *vma); void hugetlb_vma_assert_locked(struct vm_area_struct *vma); void hugetlb_vma_lock_release(struct kref *kref); +vm_fault_t vmf_anon_prepare(struct vm_fault *vmf); =20 int pmd_huge(pmd_t pmd); int pud_huge(pud_t pud); diff --git a/mm/memory.c b/mm/memory.c index 89bcae0b224d..c93b058adfb2 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3081,7 +3081,7 @@ static inline vm_fault_t vmf_can_call_fault(const str= uct vm_fault *vmf) return VM_FAULT_RETRY; } =20 -static vm_fault_t vmf_anon_prepare(struct vm_fault *vmf) +vm_fault_t vmf_anon_prepare(struct vm_fault *vmf) { struct vm_area_struct *vma =3D vmf->vma; =20 --=20 2.43.0 From nobody Sun Feb 8 09:13:17 2026 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6AA1815444C for ; Tue, 20 Feb 2024 23:17:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708471078; cv=none; b=if3UVPJ4+cQhAnaRthMNEyhCpWXsbw3nDHGIG6YZHE+o0x4XvJAnekcbfd/LaZAdp65XO+bmj64p6tuTZSrgx4q+ymvwwWJTKsWHMnXUH0KJfpFlNfkiQceB1IiTOOXj6MOvw0ISFljFFTFlvt5xPDLLMUkxYiuPSlkpYqXvNd8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708471078; c=relaxed/simple; bh=w7NO52HmHL+q505Dn92pUra8VAi/sS5VxGl78ixbv18=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=slq6lrHXF80RodGhoUqjroGtbte+EHfKmREKE8nCrT7xwv/caxcqM5R1XONCFgAHjml115TT3onnGFhRg97YSjdFFHEgofnMYZbvxiAmJRFH3I4rBrISsY14cO29ZvAEl2oNW8+yMZzF98YM07DS94iai0Cfl2FOvzQ/+0lneTw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Pbi/t48x; arc=none smtp.client-ip=209.85.210.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Pbi/t48x" Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-6e457fab0e2so1536511b3a.0 for ; Tue, 20 Feb 2024 15:17:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708471077; x=1709075877; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aW/E5QzrtW5KWaWO1KQggPctJlLZibTAzJ7k8sLAf4k=; b=Pbi/t48xqQCHKW13C4tTZh/OP3qT5u3iOaG6k0Qm5Ho0fVgcXYliPuyFLH8FbVtsV4 x1hItszsOiQR8so6DA7x8+m0o1/2tcBxIryO8q3rF91gOaaUCt0BTmq/+NxMli4atCh0 TbwV05Tb/QesMv7vIE/lo0W3r3zTqGUk+gCfu2U57Yk2IlEwpCxQdMq0pqaOmrgO4fTB ET8WY2Jip92xHMiXEQhRE3ompz5osbsXCdKqbWFNeAGGF/4E6GH/kAeuyw9HnkqFUb33 Wukqp0vlj28EfOO1lmMM+6b+ZxZ8O35P/DJnTQoM4bWTvU73eruq6mu7IlEs3vfrK3Kr qV0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708471077; x=1709075877; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aW/E5QzrtW5KWaWO1KQggPctJlLZibTAzJ7k8sLAf4k=; b=c25HMmBXmiLirADfHuBaXXtYOWLIGbP/ZEl+56uvP6Gz6WYIiq+s4RmR4PtviGm2gp 5cWQxRTLPOyVWF9m6l6Z4Ev7SP+B6mRCYR65KWIKEDnpjy1WVF2ApHYJCu63q4G3SSK5 4mU8ZrDGLizcIygpFcOPJJleMjqr8sk72fRxGy58hy4pnH8xCX8qRRT7l8Duqsn3HLgD lEDSiuDzmRX8R+mFMqIU0Mf+eaz3v9SFLTw+qlC8/ux1ZrpvpxWTjdd/W4yKf0Sz4hBn rETosFYa7k4nIwL8EDNgwq2d/E/Tdv4VF+AtuvthjjMg85M/YB9JiVoHUwG9txH+xsd1 REdA== X-Gm-Message-State: AOJu0YzD3uqBhUrHZmLQCfZFWSwnvKXY+FP6FKv/fb3SrUlc0XQ5y7j6 Aq+D9oNPFIiPTJXqckPnaBiiyN97cpZEsv8E3ngDDg66lOyzvaMo X-Google-Smtp-Source: AGHT+IFPXuxHXTsoKb+rhglPR7fJPhGLbyzZMpYsYJF/K2X4fA7iFxHEPv599+mEA0511+dKVVlSEA== X-Received: by 2002:a05:6a00:4c98:b0:6e4:66a5:2870 with SMTP id eb24-20020a056a004c9800b006e466a52870mr7967423pfb.8.1708471076681; Tue, 20 Feb 2024 15:17:56 -0800 (PST) Received: from fedora.. (c-73-170-51-167.hsd1.ca.comcast.net. [73.170.51.167]) by smtp.googlemail.com with ESMTPSA id x16-20020aa784d0000000b006e13a5ab1e5sm5317803pfn.73.2024.02.20.15.17.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Feb 2024 15:17:56 -0800 (PST) From: "Vishal Moola (Oracle)" To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, akpm@linux-foundation.org, muchun.song@linux.dev, "Vishal Moola (Oracle)" Subject: [PATCH 2/3] hugetlb: Use vmf_anon_prepare() instead of anon_vma_prepare() Date: Tue, 20 Feb 2024 15:14:23 -0800 Message-ID: <20240220231424.126600-3-vishal.moola@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240220231424.126600-1-vishal.moola@gmail.com> References: <20240220231424.126600-1-vishal.moola@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" hugetlb_no_page() and hugetlb_wp() call anon_vma_prepare(). In preparation for hugetlb to safely handle faults under the VMA lock, use vmf_anon_prepare() here instead. Additionally, define a struct vm_fault at the top of each function. These can later be used to convert hugetlb to use struct vm_fault - similar to mm/memory. Signed-off-by: Vishal Moola (Oracle) --- mm/hugetlb.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index ed1581b670d4..10f57306e1f0 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -5834,9 +5834,15 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, s= truct vm_area_struct *vma, struct folio *old_folio; struct folio *new_folio; int outside_reserve =3D 0; - vm_fault_t ret =3D 0; + vm_fault_t ret =3D 0, anon_ret =3D 0; unsigned long haddr =3D address & huge_page_mask(h); struct mmu_notifier_range range; + struct vm_fault vmf =3D { + .vma =3D vma, + .address =3D haddr, + .real_address =3D address, + .flags =3D flags, + }; =20 /* * Never handle CoW for uffd-wp protected pages. It should be only @@ -5960,8 +5966,9 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, st= ruct vm_area_struct *vma, * When the original hugepage is shared one, it does not have * anon_vma prepared. */ - if (unlikely(anon_vma_prepare(vma))) { - ret =3D VM_FAULT_OOM; + anon_ret =3D vmf_anon_prepare(&vmf); + if (unlikely(anon_ret)) { + ret =3D anon_ret; goto out_release_all; } =20 @@ -6119,7 +6126,7 @@ static vm_fault_t hugetlb_no_page(struct mm_struct *m= m, pte_t old_pte, unsigned int flags) { struct hstate *h =3D hstate_vma(vma); - vm_fault_t ret =3D VM_FAULT_SIGBUS; + vm_fault_t ret =3D VM_FAULT_SIGBUS, anon_ret =3D 0; int anon_rmap =3D 0; unsigned long size; struct folio *folio; @@ -6128,6 +6135,12 @@ static vm_fault_t hugetlb_no_page(struct mm_struct *= mm, unsigned long haddr =3D address & huge_page_mask(h); bool new_folio, new_pagecache_folio =3D false; u32 hash =3D hugetlb_fault_mutex_hash(mapping, idx); + struct vm_fault vmf =3D { + .vma =3D vma, + .address =3D haddr, + .real_address =3D address, + .flags =3D flags, + }; =20 /* * Currently, we are forced to kill the process in the event the @@ -6221,8 +6234,10 @@ static vm_fault_t hugetlb_no_page(struct mm_struct *= mm, new_pagecache_folio =3D true; } else { folio_lock(folio); - if (unlikely(anon_vma_prepare(vma))) { - ret =3D VM_FAULT_OOM; + + anon_ret =3D vmf_anon_prepare(&vmf); + if (unlikely(anon_ret)) { + ret =3D anon_ret; goto backout_unlocked; } anon_rmap =3D 1; --=20 2.43.0 From nobody Sun Feb 8 09:13:17 2026 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 48542154BF1 for ; Tue, 20 Feb 2024 23:17:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708471079; cv=none; b=t9GYgbezbF2gcRMBeLhZBCWtfTQP/fxeOCgmXMgxhfnCrHxwu0GloA9Zo1VBLkkIbgruf5fWpIm+8IK7iQbe7Yfk+fmCHvSitw+RbpA0mlAU3NoUtah7zsyk4qz+J8IPrNF7Csrjl6XUiseJvXIn2zgV9kEPpvouP6ifvtBdO2Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708471079; c=relaxed/simple; bh=qFlaAcGU6Y1uDzxqv2LE52Sqg0304QiZAIx8ki9By54=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NNqCUFfytrrmk3hBMV9qy0hSlZTg5Y+mJa4Pp5HVsHYTQJ7L4udXGSp17ly2gCPJfWcTTO6z7xrQrNzNDjg2nSM+m0it6/cXEbsg3O+QiHhtW2l5Dx+QGYAkughaucy4ESvBWP3ww6CLduEbjWSN/VuirDpU7Mdng5hr3/vwBKk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jyUW6FvG; arc=none smtp.client-ip=209.85.215.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jyUW6FvG" Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-5ce07cf1e5dso4686334a12.2 for ; Tue, 20 Feb 2024 15:17:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708471077; x=1709075877; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WrT4PFTPEBdVnQtB3JqEnMTnzuYVsnDN94ufDiP3ix8=; b=jyUW6FvGBy5kzzZpjgyjsgXwi/pGHdx+T5eDb221Qxkhu3WyofLjjuF9GVJ5LkRPMg +v5LgT7v/4S8PCWOot5dIZIyLx1e61yAvWEqzhSkk+J1Tt2/Hl43HpxgxQOc1YRYxkfr Tyzd5snsUkgzv3+5KYymgdUZrevd/eMoN64C0LlB5eVegoY09Fb6KE7iPsB7HLB4Rv1Z daLjBaIX5rlzMu2voAQZCLsCrbfxLLI/gjY1O3XwtXTyZ9LS5faTaWLtIKwP5j73PQIJ iDl2kFNXBq9JErHiQSfIjVA30eAYKreW0/CbUvIXfq5EG7P2vu//KxNaIBCgl4gNNPYr qGyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708471077; x=1709075877; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WrT4PFTPEBdVnQtB3JqEnMTnzuYVsnDN94ufDiP3ix8=; b=tz+ykf9/7BeaTkrL2D//GQ+VqOiubOufBg8BhP9F/LXPr/e7StHQuJ027XgJElaknJ pnPRlaaZxNfy6vWGU5U6m1OnizAVWvFzoxI3e+RN8LHbqTEiOcv9xkpzCylog0/hfxyy Jy+VCbjBIwmP3iMFr37lKGibPJ+aLaxYNxwFCTsvrvpe7uUeI9A+fy+OOrYHGy6//T+c B7GEAGIBDVmZkOI3ltA7SbTAV2fwMMT6ZvIIfkWhnv7Opdz7+3d6XxSts04A/sMbdOHA b5T42sYqZ+Gqki7PHqM7Pvduf5HRVaqdYku/v4inN2S8j9IiojTf4BidDKZn7yix1bM/ mH4A== X-Gm-Message-State: AOJu0Yw2qKkCFnZZ9DmgGnWSe0BvQQ3Z6eetJuTeCCMH/goYjezkUlS0 /wWmJxBw95A+/f4SiUtRkl/MPz2bB8+jYBO5BS/EQ5p6qRmtOTch78Zlqa+V X-Google-Smtp-Source: AGHT+IFKKyG86+3BcYGfCtYk4B+BIzlGb+TUrCSTONtmVN/+s7J3gVwj8UxkSRj+/w/58I5OyBVGAw== X-Received: by 2002:a05:6a21:6315:b0:1a0:785c:58c2 with SMTP id wu21-20020a056a21631500b001a0785c58c2mr13278203pzb.61.1708471077457; Tue, 20 Feb 2024 15:17:57 -0800 (PST) Received: from fedora.. (c-73-170-51-167.hsd1.ca.comcast.net. [73.170.51.167]) by smtp.googlemail.com with ESMTPSA id x16-20020aa784d0000000b006e13a5ab1e5sm5317803pfn.73.2024.02.20.15.17.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Feb 2024 15:17:57 -0800 (PST) From: "Vishal Moola (Oracle)" To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, akpm@linux-foundation.org, muchun.song@linux.dev, "Vishal Moola (Oracle)" Subject: [PATCH 3/3] hugetlb: Allow faults to be handled under the VMA lock Date: Tue, 20 Feb 2024 15:14:24 -0800 Message-ID: <20240220231424.126600-4-vishal.moola@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240220231424.126600-1-vishal.moola@gmail.com> References: <20240220231424.126600-1-vishal.moola@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Hugetlb can now safely handle faults under the VMA lock, so allow it to do so. This patch may cause ltp hugemmap10 to "fail". Hugemmap10 tests hugetlb counters, and expects the counters to remain unchanged on failure to handle a fault. In hugetlb_no_page(), vmf_anon_prepare() may bailout with no anon_vma under the VMA lock after allocating a folio for the hugepage. In free_huge_folio(), this folio is completely freed on bailout iff there is a surplus of hugetlb pages. This will remove a folio off the freelist and decrement the number of hugepages while ltp expects these counters to remain unchanged on failure. Originally this could only happen due to OOM failures, but now it may also occur after we allocate a hugetlb folio without a suitable anon_vma under the VMA lock. This should only happen for the first freshly allocated hugepage in this vma. Signed-off-by: Vishal Moola (Oracle) --- mm/hugetlb.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 10f57306e1f0..ed472510699d 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -6376,12 +6376,6 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struc= t vm_area_struct *vma, int need_wait_lock =3D 0; unsigned long haddr =3D address & huge_page_mask(h); =20 - /* TODO: Handle faults under the VMA lock */ - if (flags & FAULT_FLAG_VMA_LOCK) { - vma_end_read(vma); - return VM_FAULT_RETRY; - } - /* * Serialize hugepage allocation and instantiation, so that we don't * get spurious allocation failures if two CPUs race to instantiate --=20 2.43.0