Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp4897288pxv; Tue, 20 Jul 2021 14:01:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyxDZJyDvXaPWjtKinBFpc1m3LnVHOKi35MuuWeA8O3YJFTzFnPeZsESCla4kJjzSB95vhq X-Received: by 2002:a50:ce45:: with SMTP id k5mr24347300edj.168.1626814911761; Tue, 20 Jul 2021 14:01:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626814911; cv=none; d=google.com; s=arc-20160816; b=GX/SaSO6H+AedFcscM49igLEapvu6eLjnC2KLKlCR+EbXKFcVbBTrYQkixMRmj20fN C5jqh1QbbWatZSCdhplCXEI/iAh+XCeRY29WtDTx4jZQY+RN9+MBmxWdGe327z1f4Qyr sjvNv61uy6W0P5nCNv5RLa+XcnjzJTUiP6qnioooICF77LVWTANmHbL18ekKbHE0jPAf IhK6dfMyQfsvV7NPc4t8RznyZytbGGGNMmtaOTP7CJoq0WFe7QnwbrKctvEvL8oF9DdO 9nD232k4vG60yD/89RCeMo2mR3dk/8hf+pxrw4b+zyYCqOM/BfG26Hi7z3B/fOvk/qHc qPOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=AboetzlMBZEQFYyVq02sIsGWJx/JjBRI37re6kVn+AM=; b=CdsEht56OIu2JMnh0Bcvm+CrIZRp59SY4OJjukhqJd+rIRAgcJ9c8VW5jK2QZC8Oz5 2jITeeOo7V7mD2qeRxDgD5/zpidOT+prmvwH5Yyz1cRHd79MZhxzdzpE4w2xtX5omxX9 I/qocFA1kUbvkC5nbsso+AL2vQmcjZXiW1Ai6Mt2ReCYA7ZR1YtTVkVliu8mhv1L9beb QPp/VfP+DcDTmG0CrlRidvbqMp39nrqaWwNdz/6NhEf4++kv+Oncoo9hkhamGCm8J9xZ oJn25FtisNBw9oRJtoRRlT75f2r5apx2XLQ/X4ToJgAXbFKFr0u/hLO9F+4ZceQlX2D0 XTdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=WMiyPulp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gv16si25250942ejb.111.2021.07.20.14.01.27; Tue, 20 Jul 2021 14:01:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=WMiyPulp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235062AbhGTURK (ORCPT + 99 others); Tue, 20 Jul 2021 16:17:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43850 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235910AbhGTUIh (ORCPT ); Tue, 20 Jul 2021 16:08:37 -0400 Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com [IPv6:2a00:1450:4864:20::62b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C8E12C061768 for ; Tue, 20 Jul 2021 13:49:02 -0700 (PDT) Received: by mail-ej1-x62b.google.com with SMTP id nd37so36284054ejc.3 for ; Tue, 20 Jul 2021 13:49:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=AboetzlMBZEQFYyVq02sIsGWJx/JjBRI37re6kVn+AM=; b=WMiyPulpA0yNVIE1CU5GjpG4+1PLhkQ2dzox7fjiM1rGEzfYvvYzfYmhMjS3f8ShbR RW3oSaI6QVNXk+ziX7uVpMO49OSf0jnwHct3788yjnSeaF5SgdtIqIqdX4djCsK4i2Sy 5mr7RJyXNjiARSzGBqzk5l+/zblMhQgdhHjdLBfRtZJgra+oP7SRcUXwauR8fj0UYpR8 F7V0Eg/+zQpz/bmaQvXE10l0O+2flHYzD2SbH34ufoT6HQu2l7jhlMbHfe5CCmn5e2gO MR2vnmxX9PZpbRsVTvUAqCegWibE2VGFJsDYJNWGCMyRDbJSTVmTZX3vnoly40YwxVTT GXaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=AboetzlMBZEQFYyVq02sIsGWJx/JjBRI37re6kVn+AM=; b=fAjf1CaEnU9P1ek/isupV5AJfsnguegPreqdgTu9vTdWYLkWOBT9LlaW4ewfauLJuS hB+cn543/IeEDC4oxDD16QrNRc3m314jG4RZgfA5PHSbCOhBH7jzSJPcHHLTxQoCJw6e MxHp5uNMMisW/tXIsPW2m5EUc8Y5ySjJo5w20qAZbfPXCHGki391oFR5xi2nwkKHSs56 jisjbqADlVxSyvO+h8pVQLE21w4rJX6e33gUc29HoZcgv5NZ7zn+w7g3tZ/f4R3e8Cjx UXnmp3+ti7mq07lbJkIjGljuGrz5V6NlBH4t26DqrNttaNXgtyUTgoL3qKA3/Q/MpDPB bgUA== X-Gm-Message-State: AOAM532S5+ul2715DcSZsCb6cbz6mcb8DS1bW7v+SN3X8n8TyBra7HnW b3L/j/HuQzQfrM6nSHy8VS/FVM26ydY/fylzdVpUsuus6STS1Q== X-Received: by 2002:a17:907:20c6:: with SMTP id qq6mr10939524ejb.25.1626814140990; Tue, 20 Jul 2021 13:49:00 -0700 (PDT) MIME-Version: 1.0 References: <20210720065529.716031-1-ying.huang@intel.com> In-Reply-To: <20210720065529.716031-1-ying.huang@intel.com> From: Yang Shi Date: Tue, 20 Jul 2021 13:48:47 -0700 Message-ID: Subject: Re: [PATCH] mm,do_huge_pmd_numa_page: remove unnecessary TLB flushing code To: Huang Ying Cc: Andrew Morton , Linux MM , Linux Kernel Mailing List , Dan Carpenter , Mel Gorman , Christian Borntraeger , Gerald Schaefer , Heiko Carstens , Hugh Dickins , Andrea Arcangeli , "Kirill A . Shutemov" , Michal Hocko , Vasily Gorbik , Zi Yan Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jul 19, 2021 at 11:56 PM Huang Ying wrote: > > Before the commit c5b5a3dd2c1f ("mm: thp: refactor NUMA fault > handling"), the TLB flushing is done in do_huge_pmd_numa_page() itself > via flush_tlb_range(). > > But after commit c5b5a3dd2c1f ("mm: thp: refactor NUMA fault > handling"), the TLB flushing is done in migrate_pages() as in the > following code path anyway. > > do_huge_pmd_numa_page > migrate_misplaced_page > migrate_pages > > So now, the TLB flushing code in do_huge_pmd_numa_page() becomes > unnecessary. So the code is deleted in this patch to simplify the > code. This is only code cleanup, there's no visible performance > difference. Yes, there is tlb flush in try_to_migrate(), but it seems mmu notifier invalidate is missed for the THP migration case. I'm not quite sure why it is not needed, maybe just missed? So, you may need the below change too: diff --git a/mm/rmap.c b/mm/rmap.c index 2d29a57d29e8..e1c8b654563d 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -1749,6 +1749,8 @@ static bool try_to_migrate_one(struct page *page, struct vm_area_struct *vma, !PageTransCompound(page), page); set_pmd_migration_entry(&pvmw, page); + mmu_notifier_invalidate_range(mm, range.start, + range.end); continue; } #endif > > Signed-off-by: "Huang, Ying" > Cc: Yang Shi > Cc: Dan Carpenter > Cc: Mel Gorman > Cc: Christian Borntraeger > Cc: Gerald Schaefer > Cc: Heiko Carstens > Cc: Hugh Dickins > Cc: Andrea Arcangeli > Cc: Kirill A. Shutemov > Cc: Michal Hocko > Cc: Vasily Gorbik > Cc: Zi Yan > --- > mm/huge_memory.c | 26 -------------------------- > 1 file changed, 26 deletions(-) > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index afff3ac87067..9f21e44c9030 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -1440,32 +1440,6 @@ vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf) > goto out; > } > > - /* > - * Since we took the NUMA fault, we must have observed the !accessible > - * bit. Make sure all other CPUs agree with that, to avoid them > - * modifying the page we're about to migrate. > - * > - * Must be done under PTL such that we'll observe the relevant > - * inc_tlb_flush_pending(). > - * > - * We are not sure a pending tlb flush here is for a huge page > - * mapping or not. Hence use the tlb range variant > - */ > - if (mm_tlb_flush_pending(vma->vm_mm)) { > - flush_tlb_range(vma, haddr, haddr + HPAGE_PMD_SIZE); > - /* > - * change_huge_pmd() released the pmd lock before > - * invalidating the secondary MMUs sharing the primary > - * MMU pagetables (with ->invalidate_range()). The > - * mmu_notifier_invalidate_range_end() (which > - * internally calls ->invalidate_range()) in > - * change_pmd_range() will run after us, so we can't > - * rely on it here and we need an explicit invalidate. > - */ > - mmu_notifier_invalidate_range(vma->vm_mm, haddr, > - haddr + HPAGE_PMD_SIZE); > - } > - > pmd = pmd_modify(oldpmd, vma->vm_page_prot); > page = vm_normal_page_pmd(vma, haddr, pmd); > if (!page) > -- > 2.30.2 >