Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp1226218iob; Thu, 28 Apr 2022 23:57:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPgzk2GRu88FnANt+nVnmABwH4CdSDRBHavrA6uGfr34DAtoDLA2ZAV4dWWw68fUT3D1Bl X-Received: by 2002:a2e:3112:0:b0:24f:132a:fd71 with SMTP id x18-20020a2e3112000000b0024f132afd71mr15148720ljx.522.1651215435429; Thu, 28 Apr 2022 23:57:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651215435; cv=none; d=google.com; s=arc-20160816; b=nMZ0HsFKJukLJgkgct2zWaNeDQDbXX77mwlDcs/qOg30E/rOXmASKal2LTCZJVMKMt akNmmKNVZD59/8u+40coZmAkJ3rH50Cp6wftp79d1l1t2Y2OgLLh3u2xs8vw24JHCYZe xkcuJSwFgy39Sxf1CdkvFSPZstUto+lTqAW+yPVdLjrqPdHGj7tBOvZZ6MyaKnj2t4Xs YNUqbCm8PdPWqjztSGXCDa3aOe0qYSrOjda02sA7W1LUS62YnX3tdaGoaZInW+6EDBvb 2ZxCtBdbEfBquQ03uCqm1V4RE9X/MeHe29CKf6YTj+EZeTvxIBOk62iMAgZlGSbcnxf6 HiJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=OmWboORltJDtK22Ml4YLWVJ4IYLqmhFFeju3DQyJN9k=; b=ex+D8ArrSoFPXG1R1q/BVazNmXQt3Ee3HECPsTFsUXzMB6taw6z5ikBZASK0cKguMt QtSIv1R3aYR6KSWUfminVrU5QVgB0gkmZIRB+bbvYGi/Ja1RxvF+NW2cjND5ux/QjMww mLiOcSl1AMi3LiX1imsAUyUFA5S/nptJ7u81xtQeK8y43dgIuM1RieDQM5hMtirDsV4N 0r1DV51OA14xm0AtQJjwdkKflu84dgn0rJIu35LL/f7Ki1t4Uvf6kLJZ/RwH81m18drE oSIoGaCrs/g7aufcMeRyJgc+klg8X0tLZ+RykpQ8CodA1ftWYzenQNt0y4IQaIx1Paub qWbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=7wEby7WZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h20-20020a2e3a14000000b0024f402f3f8esi632807lja.2.2022.04.28.23.56.44; Thu, 28 Apr 2022 23:57:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=7wEby7WZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243393AbiD1F70 (ORCPT + 99 others); Thu, 28 Apr 2022 01:59:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41552 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243415AbiD1F7L (ORCPT ); Thu, 28 Apr 2022 01:59:11 -0400 Received: from mail-pg1-x535.google.com (mail-pg1-x535.google.com [IPv6:2607:f8b0:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 007E134B9C for ; Wed, 27 Apr 2022 22:55:54 -0700 (PDT) Received: by mail-pg1-x535.google.com with SMTP id bg9so3139171pgb.9 for ; Wed, 27 Apr 2022 22:55:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=OmWboORltJDtK22Ml4YLWVJ4IYLqmhFFeju3DQyJN9k=; b=7wEby7WZpYLiIm29N1XA/YqtYC0pLS1v428ehj5J4t8iB3tIf5AVgTpuwo3tOoK0Qp RAO+mhuAo53l0Z+XoDOgvgVPw6y1Qay/TaRM3aDggZxnW9lNOhKKzp2+L6TlJSt40cRM OX6eHh4XBy/8ms8Hvvxa2yjZJBRhBLEZRqbkIEYDbeMMGf/DkTV0cY08oQr0txjRS/Dr 7nRb5jSHGfYuy6PQseVOzK0NKrmkCAoelFuEx+fegs0qt+KDrCFhwbcWdrd05BFXYexL x2exmG6PEXaC2bo2KPGUbR6lsFBAb3W+01mrOus+zBTyyY+8en+GtaHJjrA+hxbg7CQ6 Ba/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=OmWboORltJDtK22Ml4YLWVJ4IYLqmhFFeju3DQyJN9k=; b=yG3gcCIcdmoXzi7mo7AhN8WT3PfN3SXdtkCru/VstAYA33vjuiJeyezmIA3UYlgc6J d9m4rdZQbpeVTYu4/AhMvQYXk64qFgAeeekeCELbtcSr94XleVJccc/HrXnbmD4N7ZQ8 P7jlodnDubvPzphTmuKJi/15tIO6Tu8NV6b0e4xJe50qJGTmeuvddfrfEPQeaMlph5jv QLAL1Ki8GEnpLIO/P5IeHHc+RKQHupXmg8Tg7j9YAR+DONV0TDJJ0xVWLJar01iWeEQc Hjp/poHjGfrTXZgXMAgTwYi2EGlEdWMZ1LiMqXUE0VcMU33NQxspSDI0Xig1Spfj+5Cu CNzA== X-Gm-Message-State: AOAM532mA2EadlgKmepzunhGibBhNI/dAYTTqEuH/hc7myYiU7uCnfdy 87Drf43MeeikMaizj5xJNJWP8A== X-Received: by 2002:a05:6a00:1145:b0:4f6:3ebc:a79b with SMTP id b5-20020a056a00114500b004f63ebca79bmr33588283pfm.41.1651125354465; Wed, 27 Apr 2022 22:55:54 -0700 (PDT) Received: from localhost ([139.177.225.239]) by smtp.gmail.com with ESMTPSA id c18-20020a056a000ad200b004f0f9696578sm23424519pfl.141.2022.04.27.22.55.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 22:55:54 -0700 (PDT) Date: Thu, 28 Apr 2022 13:55:50 +0800 From: Muchun Song To: Baolin Wang Cc: akpm@linux-foundation.org, mike.kravetz@oracle.com, almasrymina@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 2/3] mm: rmap: Move the cache flushing to the correct place for hugetlb PMD sharing Message-ID: References: <4f7ae6dfdc838ab71e1655188b657c032ff1f28f.1651056365.git.baolin.wang@linux.alibaba.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4f7ae6dfdc838ab71e1655188b657c032ff1f28f.1651056365.git.baolin.wang@linux.alibaba.com> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 27, 2022 at 06:52:06PM +0800, Baolin Wang wrote: > The cache level flush will always be first when changing an existing > virtual–>physical mapping to a new value, since this allows us to > properly handle systems whose caches are strict and require a > virtual–>physical translation to exist for a virtual address. So we > should move the cache flushing before huge_pmd_unshare(). > Right. > As Muchun pointed out[1], now the architectures whose supporting hugetlb > PMD sharing have no cache flush issues in practice. But I think we > should still follow the cache/TLB flushing rules when changing a valid > virtual address mapping in case of potential issues in future. Right. One point i need to clarify. I do not object this change but want you to clarify this (not an issue in practice) in commit log to let others know they do not need to bp this. > > [1] https://lore.kernel.org/all/YmT%2F%2FhuUbFX+KHcy@FVFYT0MHHV2J.usts.net/ > Signed-off-by: Baolin Wang > --- > mm/rmap.c | 40 ++++++++++++++++++++++------------------ > 1 file changed, 22 insertions(+), 18 deletions(-) > > diff --git a/mm/rmap.c b/mm/rmap.c > index 61e63db..4f0d115 100644 > --- a/mm/rmap.c > +++ b/mm/rmap.c > @@ -1535,15 +1535,16 @@ static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma, > * do this outside rmap routines. > */ > VM_BUG_ON(!(flags & TTU_RMAP_LOCKED)); > + /* > + * huge_pmd_unshare may unmap an entire PMD page. > + * There is no way of knowing exactly which PMDs may > + * be cached for this mm, so we must flush them all. > + * start/end were already adjusted above to cover this > + * range. > + */ > + flush_cache_range(vma, range.start, range.end); > + flush_cache_range() is always called even if we do not need to flush. How about introducing a new helper like hugetlb_pmd_shared() which returns true for shared PMD? Then: if (hugetlb_pmd_shared(mm, vma, pvmw.pte)) { flush_cache_range(vma, range.start, range.end); huge_pmd_unshare(mm, vma, &address, pvmw.pte); flush_tlb_range(vma, range.start, range.end); } The code could be a little simpler. Right? Thanks.