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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7D5EC83F1B for ; Thu, 17 Jul 2025 11:52:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 07FE68D0001; Thu, 17 Jul 2025 07:52:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 038508D0009; Thu, 17 Jul 2025 07:52:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DC49C8D0001; Thu, 17 Jul 2025 07:52:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id CABEF6B00B6 for ; Thu, 17 Jul 2025 07:52:28 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 79EF35AF16 for ; Thu, 17 Jul 2025 11:52:28 +0000 (UTC) X-FDA: 83673593976.25.7F52183 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf07.hostedemail.com (Postfix) with ESMTP id 72CC140004 for ; Thu, 17 Jul 2025 11:52:26 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=hhHUd2xh; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf07.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752753146; a=rsa-sha256; cv=none; b=JEm5T4kkGt4Cbe52gUzh0O3I8Pw7uRW7ULvCO3K94l2ko/K2v2Db9ZurjVHQyfC1RHwlpS hLHQVZKHQX0XtzrbadWdnKoyQVkAYDPIebkNEYp9/CYQeRo05SQZUpABZyMDLS557NTRgb PKWX5QTbq4QDrbyc5Nxug9vaVKeNr7E= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=hhHUd2xh; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf07.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752753146; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=8U/VSSfKctO+2Q0R03xR9syW7Y0P/UCdJOxdygVgan0=; b=PdwtCs8+BAUJMm842Lgua4LADZ2eb77BjN59P/CNaF757l7ZYXcQyB1NBmFh3rp1BfKbZR IghEuTojeQr/lpfyR8jt/oJuGe1aBzS6+ZqeZDmfV+iUok+pS1nrIMGLLLFf8Feivyw58i IkWHDbTVy2DdjhXb3/+piVm+LdzxYow= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752753145; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8U/VSSfKctO+2Q0R03xR9syW7Y0P/UCdJOxdygVgan0=; b=hhHUd2xh8etESKHce97p4E7wO2CJZYs60r+Y9VRw9U4fk+PgL2pR0Aq66VOKD3NuLQvji1 KGvWlaBFCOdmMAqvQCeNxMbvh1ToEZDdnjAIp9k09gHmwtenqryeDzFpPxrjly9Z/El4M0 Ndcmy2lb2eFXoBfUNjEKzvMptuw23DE= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-326-ioPSAH_MMHmS1m1O1LH7zw-1; Thu, 17 Jul 2025 07:52:21 -0400 X-MC-Unique: ioPSAH_MMHmS1m1O1LH7zw-1 X-Mimecast-MFC-AGG-ID: ioPSAH_MMHmS1m1O1LH7zw_1752753140 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-455e918d690so12107355e9.1 for ; Thu, 17 Jul 2025 04:52:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752753140; x=1753357940; 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=8U/VSSfKctO+2Q0R03xR9syW7Y0P/UCdJOxdygVgan0=; b=EgPBPS4JsWp0bY7Kl8sH4V40/hR7yo4ZijNEJMuhboaqd9YODu+M3+Wa4E6H/N7/dK 4oPCnWRosxktth8nMXW1AciiDEFqDms8gXSFTYvr0PYkFxbFD6Oj60+/GeoPlUCkj5Bi QWcPjZGCiiufxT8qgcwy3H+ZLr1Xvji+aVYGE6D1op7XtgLQHcaM2xqqdEtyLv5nBeRf isok2LrDn27kvqZ83vf/1zAnEgd02ceHCax2F2f8dp43UkTl/dFbKtz60iEK8WxJJjLv jc3Qn7JxhMoq9SKEQLLoR+tg98gUuxibNTQce3X5f+EBAqnbGctXeAOyxNFEGCuqlJYT vdsw== X-Gm-Message-State: AOJu0Yyvw84GYaO2eDtHgTcMu8joxNILrN9DCFfkZcSHQD9n1WnGOgYT NMbiwY5PqxlTYVfMLeKdDd5K90+vV5J+mQnACI3hVgNBWZMu6a+ZQ8TIhN5iZo86+2emCTq2WPV Q4DK2GEG469BelhfT9LpXh4gOrUJycwp8YdO6vZbxDmY0vqyVwTro X-Gm-Gg: ASbGncuigWsYrdif3sD+PXZGJh4E+vQocATFJ4TVD4DNJLRlsgZkdflhvajibYoxE40 KPhibE4zGaOT0oOsKdEuu/MRxIFa0GO77DN33G0dRTl53r64G0GFPECQiWY4P0IJtENjyK/1z9+ qODBCZeFFPDHAh6BuaeadlYJqeQ5bCU8eEtgMBjvN6Fj/b1BZXQ5v8mNOQDFVzvT+LAud3ExMaM kCmQ98YRrzrQzEuyRQpXMv5euJAjDq+ZDvJ7hDVpQk95wle6DMzqeNA9FzRVRI+K5Mg2+hVSi2D M1+7KoH1EH1LTSE5CZfcOPEtbUKpxSOriC0pyPyLkCDNqwCgCRs+PPVdWq+N0pzQ0BoU0Kf+JLW aTeiXp5sq1I4t3ZjdvNhmHkA= X-Received: by 2002:a05:600c:c0ce:b0:450:c9e3:91fe with SMTP id 5b1f17b1804b1-456346e2767mr22597945e9.0.1752753140275; Thu, 17 Jul 2025 04:52:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHRhI54TwDUdDBNIeRKh7AVS/hfT6FB+wtUWYU/lc2VhuDIhVT1QHk+Jezb55nN35RC/TrzYQ== X-Received: by 2002:a05:600c:c0ce:b0:450:c9e3:91fe with SMTP id 5b1f17b1804b1-456346e2767mr22597745e9.0.1752753139781; Thu, 17 Jul 2025 04:52:19 -0700 (PDT) Received: from localhost (p200300d82f1f36000dc826ee9aa9fdc7.dip0.t-ipconnect.de. [2003:d8:2f1f:3600:dc8:26ee:9aa9:fdc7]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-45634f82f29sm20129705e9.23.2025.07.17.04.52.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 17 Jul 2025 04:52:19 -0700 (PDT) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org, nvdimm@lists.linux.dev, David Hildenbrand , Andrew Morton , Juergen Gross , Stefano Stabellini , Oleksandr Tyshchenko , Dan Williams , Matthew Wilcox , Jan Kara , Alexander Viro , Christian Brauner , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Jann Horn , Pedro Falcato , Hugh Dickins , Oscar Salvador , Lance Yang , Alistair Popple Subject: [PATCH v2 2/9] mm/huge_memory: move more common code into insert_pud() Date: Thu, 17 Jul 2025 13:52:05 +0200 Message-ID: <20250717115212.1825089-3-david@redhat.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250717115212.1825089-1-david@redhat.com> References: <20250717115212.1825089-1-david@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: KjVOHHHiGppGzFUdSeRMDZ_6iaAa1wi7AXoPxLcrk5c_1752753140 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 72CC140004 X-Stat-Signature: yfbeat4d7bmbwhy73g841cyn5dgj51go X-Rspam-User: X-HE-Tag: 1752753146-758155 X-HE-Meta: U2FsdGVkX19LnWVJapfdLB64s+m3XFhc69/hv35BJD4RMRI64LQove7evZ5x0RPZ96q0JGowa+qfUcTUST4tSnrmtni1oiUK9QIl+d+bu14GiCdgogzJtfx5okfraBC5OWYzYAgZnmcitG19aUy4kZsB9dQSaLRl5iNz3bQLH1QfCNhBPyIH2NRZ9EAPqiLxnFACfbVrHxQY82HSLersSduK8HE5JUd2carq0VEU/Hx7Iu4LstwO4wX1s7nT+xrU2SZ3LqLO+/g7m2Rib7zEwxZ8e8J/JoFGQeHrzcjSVjAnwnA0caqEt9GpUFFR/zYMD9XoWlmcsuIVcfl1ep6d4yS1Y8p5GYVw+CwBbT+yySbpJ4EB5o5oX6YF0+3YRSpfb3iYYUBzKaS6zgYzDPovina9YTLfRN+4GuiiZc6HSiLnemJDBnSU9I8ATwW/Xn2HMX5iz2K/6ct5MkKxnonwN2oJcKZLTVt4FLWoqMN6QJUBwkZg/huiYaZC0EAIMrvBVoc4Bj8j4omzGeRiXdSP7zp98VTUi22/v2WaK/kabdgL6CWfB7NPQapmJooEnRI9h3fvUGEiYvUCDIjgwao6KcxjDf5mn6wg60o25OQsq2jmZFaj1ft3uOSJvi79gdAXINSrcY91a5vEXj7IUp2D662y2UeAPWhkj7CFrAQ+oWFEl/16d9JM8fvD9dTqWXQ9zF0wpQ5TuHRPfo3a1qJEmpvzZrcYMaBA3Vz7FqPoA20Zr3bPbZbOng4xg3noEdv1Jpnv8EYmqax7kSLAwDbqzQ+fVXisODKBw8hmgj9QpGVkhadbA2uaaRlFuwrfM8W4KjomaH2dTDFU5gjAi5rSEWy0RuJTldaBkTA/b1klBr3IX2JZAabGAFsV4Nh/RgK3cvYeUCzaCxtJwWM3JCTJ7MKzDpEfxAoPFpLnsaBtm4qg8KjvEPJFIHlCsehbiTPFnWbH0KnYtITMaQkEyVZ AujbCx6N QRWX8CoKiNQUlSLgSaME+MZkAAZhyKs/Qa2LO9KNLxMti+rDay5yMuvarefpGxhPvSzbjKncel/d6iRGb0P+ABplV9vx7YDY70q6tCXrowS1ptBXd1oMMZCwqcfyHhDA+SjGpA63Uy0egW7kHlDsOZ5ykft44tTykl0AMkqDEFEDwEW6B7zuXPdred0QaGG+7ScI3yLWQlY35yp3OYsW/gb+uK9X0bZ5mWFyZ 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: List-Subscribe: List-Unsubscribe: Let's clean it all further up. No functional change intended. Reviewed-by: Oscar Salvador Reviewed-by: Alistair Popple Signed-off-by: David Hildenbrand --- mm/huge_memory.c | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 1178760d2eda4..849feacaf8064 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1518,25 +1518,30 @@ static pud_t maybe_pud_mkwrite(pud_t pud, struct vm_area_struct *vma) return pud; } -static void insert_pud(struct vm_area_struct *vma, unsigned long addr, +static vm_fault_t insert_pud(struct vm_area_struct *vma, unsigned long addr, pud_t *pud, struct folio_or_pfn fop, pgprot_t prot, bool write) { struct mm_struct *mm = vma->vm_mm; + spinlock_t *ptl; pud_t entry; + if (addr < vma->vm_start || addr >= vma->vm_end) + return VM_FAULT_SIGBUS; + + ptl = pud_lock(mm, pud); if (!pud_none(*pud)) { const unsigned long pfn = fop.is_folio ? folio_pfn(fop.folio) : fop.pfn; if (write) { if (WARN_ON_ONCE(pud_pfn(*pud) != pfn)) - return; + goto out_unlock; entry = pud_mkyoung(*pud); entry = maybe_pud_mkwrite(pud_mkdirty(entry), vma); if (pudp_set_access_flags(vma, addr, pud, entry, 1)) update_mmu_cache_pud(vma, addr, pud); } - return; + goto out_unlock; } if (fop.is_folio) { @@ -1555,6 +1560,9 @@ static void insert_pud(struct vm_area_struct *vma, unsigned long addr, } set_pud_at(mm, addr, pud, entry); update_mmu_cache_pud(vma, addr, pud); +out_unlock: + spin_unlock(ptl); + return VM_FAULT_NOPAGE; } /** @@ -1576,7 +1584,6 @@ vm_fault_t vmf_insert_pfn_pud(struct vm_fault *vmf, unsigned long pfn, struct folio_or_pfn fop = { .pfn = pfn, }; - spinlock_t *ptl; /* * If we had pud_special, we could avoid all these restrictions, @@ -1588,16 +1595,9 @@ vm_fault_t vmf_insert_pfn_pud(struct vm_fault *vmf, unsigned long pfn, (VM_PFNMAP|VM_MIXEDMAP)); BUG_ON((vma->vm_flags & VM_PFNMAP) && is_cow_mapping(vma->vm_flags)); - if (addr < vma->vm_start || addr >= vma->vm_end) - return VM_FAULT_SIGBUS; - pfnmap_setup_cachemode_pfn(pfn, &pgprot); - ptl = pud_lock(vma->vm_mm, vmf->pud); - insert_pud(vma, addr, vmf->pud, fop, pgprot, write); - spin_unlock(ptl); - - return VM_FAULT_NOPAGE; + return insert_pud(vma, addr, vmf->pud, fop, pgprot, write); } EXPORT_SYMBOL_GPL(vmf_insert_pfn_pud); @@ -1614,25 +1614,15 @@ vm_fault_t vmf_insert_folio_pud(struct vm_fault *vmf, struct folio *folio, { struct vm_area_struct *vma = vmf->vma; unsigned long addr = vmf->address & PUD_MASK; - pud_t *pud = vmf->pud; - struct mm_struct *mm = vma->vm_mm; struct folio_or_pfn fop = { .folio = folio, .is_folio = true, }; - spinlock_t *ptl; - - if (addr < vma->vm_start || addr >= vma->vm_end) - return VM_FAULT_SIGBUS; if (WARN_ON_ONCE(folio_order(folio) != PUD_ORDER)) return VM_FAULT_SIGBUS; - ptl = pud_lock(mm, pud); - insert_pud(vma, addr, vmf->pud, fop, vma->vm_page_prot, write); - spin_unlock(ptl); - - return VM_FAULT_NOPAGE; + return insert_pud(vma, addr, vmf->pud, fop, vma->vm_page_prot, write); } EXPORT_SYMBOL_GPL(vmf_insert_folio_pud); #endif /* CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */ -- 2.50.1