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 81242C4708D for ; Thu, 8 Dec 2022 00:31:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0F2108E0003; Wed, 7 Dec 2022 19:31:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0A3E38E0001; Wed, 7 Dec 2022 19:31:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EACF48E0003; Wed, 7 Dec 2022 19:31:02 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id DBCC98E0001 for ; Wed, 7 Dec 2022 19:31:02 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id ADC6440DBD for ; Thu, 8 Dec 2022 00:31:02 +0000 (UTC) X-FDA: 80217259164.05.1817CF1 Received: from mail-vs1-f48.google.com (mail-vs1-f48.google.com [209.85.217.48]) by imf09.hostedemail.com (Postfix) with ESMTP id 0DD00140019 for ; Thu, 8 Dec 2022 00:31:00 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=ApIcYbSm; spf=pass (imf09.hostedemail.com: domain of almasrymina@google.com designates 209.85.217.48 as permitted sender) smtp.mailfrom=almasrymina@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1670459461; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=p5WBdkEpJV/XTKI6wZIwF6RcwfBMMFBqR4HpwYj1Iik=; b=VRX7Pc92IQ2TAAW+zAPiUgzqMZbQgvpwuQ+tqBAEmSdZeC/ULc523QlfwqANaqTNzyduBA l/mLaXpZVvHWr3XifVK4BqlPS2gueYeFwSurV6fdDiX7/oUIOZyQp3N/LyHXRm/XZKSJxk qQo1E+DyRCw18BOkUCD08mQfg2avsZY= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=ApIcYbSm; spf=pass (imf09.hostedemail.com: domain of almasrymina@google.com designates 209.85.217.48 as permitted sender) smtp.mailfrom=almasrymina@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1670459461; a=rsa-sha256; cv=none; b=rE/U2+GwgxQl+2f2Nu/MZIrPuEiIbhhUJPmJL0bDAvz7tDO0AFRdKAYdESWNboQ/bgfbt5 /QJsgr5yyoKuJXykPgFVEF2ZGHrKybd9myhfcB3QUzp4SjVP6kQwwVF2NRz2jBdiLSL/CW 14S7VvrjyyN/uFz98n73CxvdDFfAQc8= Received: by mail-vs1-f48.google.com with SMTP id b189so70417vsc.10 for ; Wed, 07 Dec 2022 16:31:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=p5WBdkEpJV/XTKI6wZIwF6RcwfBMMFBqR4HpwYj1Iik=; b=ApIcYbSmekD23uWx5dA+Kl8FYlXaFPXjaNGrYJBcdv58Kv2UWbXVCFH8WTmJLFCwIh mvwYSPh2TEYnrQoNMG6iVnSQuqmhtnkXGPSb/YN5kw6dNFt4kujnjZ/tog57LgAc6g0I Ji1ptK6Kc2BbWhRofFpEMWvrN04PSEQliJ60/MDQbeVjugGJXTXf+ZuPRcLZ8gp2pHtr B514nqs2+t+c/tZAK8WpiXRZc6MZ+y2+Rnd2PnwEmmpIy3h+KI/SngXjgW+qMf+np/Ma l2uePVBq5EynPhxXEtii2rD7yIGe3WVPBESFgAWYsvfpT2M3AiqwK5sCXv+3f6dabEKF bhXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=p5WBdkEpJV/XTKI6wZIwF6RcwfBMMFBqR4HpwYj1Iik=; b=Lz5LvfOidVpJmjQ65E67meY9QZG3AtYMt4R999nalASwK6sYoBU3bj9rALf6TByu4w khQwwjfEEDdBzA6/LK0Hu8TAF+45mYzkeBgT1L6JzyELaVyVktR17iTmeczlBKkLqeU1 o3py6Yq8H0arS7emdG64zSIYCtp5JIUEEIqSHx5Gv11f0vVT2cTB9jWtE2jrLe+X721c 726rNRbWzPlYcjTIEO9TCdeLUFIyU12puWalat0jgrr9OBBkO7/YtWNynJ2ztRLh/dMI v7F0AhvO/j7fKkzhjlvRgm9JN79AYRwdLKri/RKWlaLCQfTyogYHCLDhqGpKm471xNTy 19dw== X-Gm-Message-State: ANoB5pmQgoHZwGDFWxaKDQY8xpLgQ0TNrSpT4v9sG1iJ4PGCOtdz6h0S medga/8TX1kR1AQCoXNFEC3+CgebpNODVtndqDglrw== X-Google-Smtp-Source: AA0mqf6Fc8JDX0zOyaZo1dEdUVkKWxDXZVSQbIRgemJLXPJi9Hi9MqDONzRdv750MdoUxYtULUkl4OtDxojo2LoiLE4= X-Received: by 2002:a05:6102:cd1:b0:3aa:1bff:a8a5 with SMTP id g17-20020a0561020cd100b003aa1bffa8a5mr52169243vst.67.1670459460180; Wed, 07 Dec 2022 16:31:00 -0800 (PST) MIME-Version: 1.0 References: <20221021163703.3218176-1-jthoughton@google.com> <20221021163703.3218176-10-jthoughton@google.com> In-Reply-To: <20221021163703.3218176-10-jthoughton@google.com> From: Mina Almasry Date: Wed, 7 Dec 2022 16:30:48 -0800 Message-ID: Subject: Re: [RFC PATCH v2 09/47] hugetlb: make huge_pte_lockptr take an explicit shift argument. To: James Houghton Cc: Mike Kravetz , Muchun Song , Peter Xu , David Hildenbrand , David Rientjes , Axel Rasmussen , "Zach O'Keefe" , Manish Mishra , Naoya Horiguchi , "Dr . David Alan Gilbert" , "Matthew Wilcox (Oracle)" , Vlastimil Babka , Baolin Wang , Miaohe Lin , Yang Shi , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: tfkgggg4gcd7mcqj7193hfybk85tekui X-Rspam-User: X-Rspamd-Queue-Id: 0DD00140019 X-Rspamd-Server: rspam06 X-HE-Tag: 1670459460-913566 X-HE-Meta: U2FsdGVkX1/Q4SAepHAYqc+ae4Lqs1oqRTFu+D4kiaeJJ6lkufGMxpW1YJrwXNpZBRydJgGUS+Bxy3T/pBKjEFdFbKAdR3SN3GYewYGwUdg/mIoejeaz0cQG+WKJOOZJ92s2K2rtUWhOc96EonWJJNwWSnul0QVsUdI/Gd+mRNj/OuglkInCniu7AXZbv42W2xNa06qf6OWw9q2wSAaZX/Z7lA8sVn60VlrFe4Wk82T3BLoi3ypHzUWD735ZfXNhnp8ospA5gpK+/+OaltDG4NBYTzyF2c+uk/QDspsJzWdfbHE7IuNXG09tkAtjJg1+zsG/uRErUj1dNYD75D0kNnLrRo1tclMxfqH3qCPj8fRcoBsXL1qO5+ffLlLdsWz5K3JbeXnzyocVJDIZXWZ1rrFItYqOLI5H3IGwGxshkBFdF90Y6w457A9PDynzcMncQpPcQDcP//VzZnJwKMxQsQx7pDhkgPsCkBIOhWqJHRdiMqkqequ2rfBrDT1Qrphehax/6gSBXXZ5ElGA1Bots+7VFixUlIWQ8jtMsgNYUTbbWjwBsEkOwfyBWVtenY8tcnlrDA01hjFQbl05b5PQwmVSFgs7yWoAnUMvj8GJEfo34rHRHPTc0YtgFdwJsAfmi5kZuflsmZkS3zjiadpBjHGF8O3OBPmffcxkxu0mGfJf8GMqbpm8g+nlkP5KDAPFhSifremrtQlSlpyymzNJoUEuB5RqHti+DBK69fedgAo/G+9gL35Rdk/srwLa/Pa7LR26HM7qhutQGAOPzNgL02eXAeHKsV2LSgSi2c3US7d1Nw6rNajfhUNcCozoF5yywwoRD85aQe4tKXeRjTZAKjRxYWnkEDtMAqGmdCWVYcVE3aYCSYk3NimRR8xVUjKrpPgoJLm7wqHemEUdHuprwAmTLIHmdFfxNGoMdv65WCDwjvDyxUWcf80Pbhvbg5Z+dvglIHhD1JNavXMnUQq aTFQql9W /GVOKSL9EjZR3MjgaYOvNX5iaHRBy1xMlR5GdDR41NWrjgxL6QfdreWbiGQ== 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: On Fri, Oct 21, 2022 at 9:37 AM James Houghton wrote: > > This is needed to handle PTL locking with high-granularity mapping. We > won't always be using the PMD-level PTL even if we're using the 2M > hugepage hstate. It's possible that we're dealing with 4K PTEs, in which > case, we need to lock the PTL for the 4K PTE. > > Signed-off-by: James Houghton Reviewed-by: Mina Almasry > --- > arch/powerpc/mm/pgtable.c | 3 ++- > include/linux/hugetlb.h | 9 ++++----- > mm/hugetlb.c | 7 ++++--- > mm/migrate.c | 3 ++- > 4 files changed, 12 insertions(+), 10 deletions(-) > > diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c > index cb2dcdb18f8e..035a0df47af0 100644 > --- a/arch/powerpc/mm/pgtable.c > +++ b/arch/powerpc/mm/pgtable.c > @@ -261,7 +261,8 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma, > > psize = hstate_get_psize(h); > #ifdef CONFIG_DEBUG_VM > - assert_spin_locked(huge_pte_lockptr(h, vma->vm_mm, ptep)); > + assert_spin_locked(huge_pte_lockptr(huge_page_shift(h), > + vma->vm_mm, ptep)); > #endif > > #else > diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h > index 6e0c36b08a0c..db3ed6095b1c 100644 > --- a/include/linux/hugetlb.h > +++ b/include/linux/hugetlb.h > @@ -934,12 +934,11 @@ static inline gfp_t htlb_modify_alloc_mask(struct hstate *h, gfp_t gfp_mask) > return modified_mask; > } > > -static inline spinlock_t *huge_pte_lockptr(struct hstate *h, > +static inline spinlock_t *huge_pte_lockptr(unsigned int shift, > struct mm_struct *mm, pte_t *pte) > { > - if (huge_page_size(h) == PMD_SIZE) > + if (shift == PMD_SHIFT) > return pmd_lockptr(mm, (pmd_t *) pte); > - VM_BUG_ON(huge_page_size(h) == PAGE_SIZE); > return &mm->page_table_lock; > } > > @@ -1144,7 +1143,7 @@ static inline gfp_t htlb_modify_alloc_mask(struct hstate *h, gfp_t gfp_mask) > return 0; > } > > -static inline spinlock_t *huge_pte_lockptr(struct hstate *h, > +static inline spinlock_t *huge_pte_lockptr(unsigned int shift, > struct mm_struct *mm, pte_t *pte) > { > return &mm->page_table_lock; > @@ -1206,7 +1205,7 @@ static inline spinlock_t *huge_pte_lock(struct hstate *h, > { > spinlock_t *ptl; > > - ptl = huge_pte_lockptr(h, mm, pte); > + ptl = huge_pte_lockptr(huge_page_shift(h), mm, pte); > spin_lock(ptl); > return ptl; > } > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index a18143add956..ef7662bd0068 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -4847,7 +4847,7 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src, > } > > dst_ptl = huge_pte_lock(h, dst, dst_pte); > - src_ptl = huge_pte_lockptr(h, src, src_pte); > + src_ptl = huge_pte_lockptr(huge_page_shift(h), src, src_pte); > spin_lock_nested(src_ptl, SINGLE_DEPTH_NESTING); > entry = huge_ptep_get(src_pte); > again: > @@ -4925,7 +4925,8 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src, > > /* Install the new huge page if src pte stable */ > dst_ptl = huge_pte_lock(h, dst, dst_pte); > - src_ptl = huge_pte_lockptr(h, src, src_pte); > + src_ptl = huge_pte_lockptr(huge_page_shift(h), > + src, src_pte); > spin_lock_nested(src_ptl, SINGLE_DEPTH_NESTING); > entry = huge_ptep_get(src_pte); > if (!pte_same(src_pte_old, entry)) { > @@ -4979,7 +4980,7 @@ static void move_huge_pte(struct vm_area_struct *vma, unsigned long old_addr, > pte_t pte; > > dst_ptl = huge_pte_lock(h, mm, dst_pte); > - src_ptl = huge_pte_lockptr(h, mm, src_pte); > + src_ptl = huge_pte_lockptr(huge_page_shift(h), mm, src_pte); > > /* > * We don't have to worry about the ordering of src and dst ptlocks > diff --git a/mm/migrate.c b/mm/migrate.c > index 1457cdbb7828..a0105fa6e3b2 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -334,7 +334,8 @@ void __migration_entry_wait_huge(pte_t *ptep, spinlock_t *ptl) > > void migration_entry_wait_huge(struct vm_area_struct *vma, pte_t *pte) > { > - spinlock_t *ptl = huge_pte_lockptr(hstate_vma(vma), vma->vm_mm, pte); > + spinlock_t *ptl = huge_pte_lockptr(huge_page_shift(hstate_vma(vma)), > + vma->vm_mm, pte); > > __migration_entry_wait_huge(pte, ptl); > } > -- > 2.38.0.135.g90850a2211-goog >