Received: by 2002:a05:6359:6284:b0:131:369:b2a3 with SMTP id se4csp2472688rwb; Sun, 6 Aug 2023 19:54:58 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEUV1xK0foICfA2g9o2vLJtevS2wizXdiN4fk/y0w+cr3hnxmHWptU68CAiahKryDs1EjoS X-Received: by 2002:a17:902:7446:b0:1b8:76ce:9dab with SMTP id e6-20020a170902744600b001b876ce9dabmr7749147plt.41.1691376898314; Sun, 06 Aug 2023 19:54:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691376898; cv=none; d=google.com; s=arc-20160816; b=n8RuY0NbjQiEctpZBY/B56gXZHA0qdjs6FkwRpQgoVpX1Iamk7fAUenxS7lOstLl7i tSzKjr/eY3gUuFhj9kWucWHcZauSGwg6fpwpqRQJirLcbSFna+7RLVLPVhadBTxoJ7ve u1dzs5eMxg87yf0icaj4YVwPDLBpElV3Np/oOisbmeC+TqsihsweNbpOoNwOA+QBa2vD 5sZtXxeZEf+zYLMFyr1vpgJiBS2AU6Qw0fqwCGIcI2LjC997vCxsSIbsWfU0K8dgJdym bz1fG3EZyiWX3zEqRH8nufQRkL3b4/+oGMK6PFNzw7EvccKwkQ1/D0Gdz2q+JLtS5CSP T/tQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=Qb/leLE6aCOZIBr9r1JYx3TvNlqeON7iS6luW38r5Jc=; fh=d1SUDQKBd0mFX6BIU5dtNsquGW3bli760Ad7VTV29LQ=; b=p3e5+lN3MJyVaX5uqvulUpmjMYe06es9B/THTcpG9wL7uk3ktEUi5J/CtM97LZq2YH rpsM8/Skg0Dhoa1GROEpLZ80kBdehtlsqTyO80ZJeW5ZPk5RI914Fy9nBusGiV3sgQqU BoX4JaJ9AwSyhaX5BdFqYrJqNj/lkIEikhgooAx2v5Q5jtZlsacZ8lSb+D1AU2T/P+2S VM0erq+SHYqsJjRsX6Cco6BC/4A+/6sogeKH6B1kk4gPeVxuWibaiSu9Nj//iJjCJpTQ JH27QpbfKVGT3/rQ2pkNeyrKR6SU7stpZnvwD9YO2HLLCBevemfsY4VLYHem6Pzrn9qf ygbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=MhFGNTSs; 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=pass (p=QUARANTINE sp=QUARANTINE 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 s13-20020a170902b18d00b001b9d2659694si5050666plr.270.2023.08.06.19.54.46; Sun, 06 Aug 2023 19:54:58 -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 header.s=google header.b=MhFGNTSs; 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=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229490AbjHGCWD (ORCPT + 99 others); Sun, 6 Aug 2023 22:22:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38872 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229742AbjHGCWC (ORCPT ); Sun, 6 Aug 2023 22:22:02 -0400 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 53F7E172D for ; Sun, 6 Aug 2023 19:21:39 -0700 (PDT) Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-1bbb7c3d0f5so8441015ad.1 for ; Sun, 06 Aug 2023 19:21:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1691374899; x=1691979699; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=Qb/leLE6aCOZIBr9r1JYx3TvNlqeON7iS6luW38r5Jc=; b=MhFGNTSsO4+QWxRK82qumq9rIgYUhYdEtWtmsu+iSWZuXBlQH+Jx6RKgdZZFO06ThW G37Ma8brGBJxWF7UkJspgflGUQaJiZaxjvDyaz18XUG2U/LCOEUXLV+VmlcLXZOvnMmj nyLtb+JMK+VKyjFzRaHEMnMfg4ALVrMpUaU+83cfjao+bENXCNlVA8puNic5zPPgRXMj uJ19xY0Zt3h4aHO3jHr8IVHButtjHyG9SS5gdQy8Dfh5p+amv6EvjCKVeeW5NrJTjjun r34wfS65FaM+UZvBU/e2i5dptVB1aCzmSDwymThGl45g7FJSqbN87dmAD07OZaTzgSR+ b51g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691374899; x=1691979699; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Qb/leLE6aCOZIBr9r1JYx3TvNlqeON7iS6luW38r5Jc=; b=hFDBHWa2618hFMKecHJTLjs2h4MJrO2krhxc7/LSv7FgQL/HBfi6H7AKvVWPxzJPJi JkdYHCxWAel9XAE1NEVXKt81607rh15hydeEnXZk91VhAUeyoljtiCckQ15P2ravsAS7 yOx/XLbSl6VT8Eq61sGgv+SznB/9dsxSKC7f9ao3q7E4S01I84qinU5Ne3c00aqQKmtU yEfgcgTwVPBv3Xe9eL2EOGjsiUgPqHh3F1Tp8SpzUHCgmZSFwldNw7hS2ZIgw9yo0vbJ ytFAM5w+HSq+KnjUDHZyIKq7uD8mUlwo3AVA3+eXFmSOErwjyiDx8QXN1HgX77sJFV/0 YvTA== X-Gm-Message-State: ABy/qLZzCXPuY0ywOE993FEe0NZ0OyZMNOvZGTb3NYOk82jRvdLDZPWK bBigYfjaQQtpB5dWmgAJOjNfKA== X-Received: by 2002:a17:902:ce92:b0:1b8:1591:9f81 with SMTP id f18-20020a170902ce9200b001b815919f81mr31962617plg.4.1691374898719; Sun, 06 Aug 2023 19:21:38 -0700 (PDT) Received: from [10.70.252.135] ([203.208.167.146]) by smtp.gmail.com with ESMTPSA id e6-20020a170902cf4600b001ac5896e96esm5514361plg.207.2023.08.06.19.21.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 06 Aug 2023 19:21:37 -0700 (PDT) Message-ID: <3403e5d3-e840-cea7-1863-b6b9ab7ecae0@bytedance.com> Date: Mon, 7 Aug 2023 10:21:20 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH v3 10/13] mm/khugepaged: collapse_pte_mapped_thp() with mmap_read_lock() Content-Language: en-US To: Hugh Dickins Cc: Andrew Morton , Pasha Tatashin , Mike Kravetz , Mike Rapoport , "Kirill A. Shutemov" , Matthew Wilcox , David Hildenbrand , Suren Baghdasaryan , Yang Shi , Mel Gorman , Peter Xu , Peter Zijlstra , Will Deacon , Yu Zhao , Alistair Popple , Ralph Campbell , Ira Weiny , Steven Price , SeongJae Park , Lorenzo Stoakes , Huang Ying , Naoya Horiguchi , Christophe Leroy , Zack Rusin , Jason Gunthorpe , Axel Rasmussen , Anshuman Khandual , Miaohe Lin , Minchan Kim , Christoph Hellwig , Song Liu , Thomas Hellstrom , Russell King , "David S. Miller" , Michael Ellerman , "Aneesh Kumar K.V" , Heiko Carstens , Christian Borntraeger , Claudio Imbrenda , Alexander Gordeev , Gerald Schaefer , Vasily Gorbik , Jann Horn , Vishal Moola , Vlastimil Babka , Zi Yan , linux-arm-kernel@lists.infradead.org, sparclinux@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <7cd843a9-aa80-14f-5eb2-33427363c20@google.com> <0df84f9f-e9b0-80b1-4c9e-95abc1a73a96@bytedance.com> <884f20fe-d642-3a5f-522a-d756c3443bb4@google.com> From: Qi Zheng In-Reply-To: <884f20fe-d642-3a5f-522a-d756c3443bb4@google.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-6.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_BLOCKED,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 2023/8/6 11:55, Hugh Dickins wrote: > On Thu, 3 Aug 2023, Qi Zheng wrote: >> On 2023/7/12 12:42, Hugh Dickins wrote: >>> Bring collapse_and_free_pmd() back into collapse_pte_mapped_thp(). >>> It does need mmap_read_lock(), but it does not need mmap_write_lock(), >>> nor vma_start_write() nor i_mmap lock nor anon_vma lock. All racing >>> paths are relying on pte_offset_map_lock() and pmd_lock(), so use those. > ... >>> @@ -1681,47 +1634,76 @@ int collapse_pte_mapped_thp(struct mm_struct *mm, >>> unsigned long addr, >>> >>> if (pte_none(ptent)) >>> continue; >>> - page = vm_normal_page(vma, addr, ptent); >>> - if (WARN_ON_ONCE(page && is_zone_device_page(page))) >>> + /* >>> + * We dropped ptl after the first scan, to do the >>> mmu_notifier: >>> + * page lock stops more PTEs of the hpage being faulted in, >>> but >>> + * does not stop write faults COWing anon copies from existing >>> + * PTEs; and does not stop those being swapped out or >>> migrated. >>> + */ >>> + if (!pte_present(ptent)) { >>> + result = SCAN_PTE_NON_PRESENT; >>> goto abort; >>> + } >>> + page = vm_normal_page(vma, addr, ptent); >>> + if (hpage + i != page) >>> + goto abort; >>> + >>> + /* >>> + * Must clear entry, or a racing truncate may re-remove it. >>> + * TLB flush can be left until pmdp_collapse_flush() does it. >>> + * PTE dirty? Shmem page is already dirty; file is read-only. >>> + */ >>> + pte_clear(mm, addr, pte); >> >> This is not non-present PTE entry, so we should call ptep_clear() to let >> page_table_check track the PTE clearing operation, right? Otherwise it >> may lead to false positives? > > You are right: thanks a lot for catching that: fix patch follows. With fix patch: Reviewed-by: Qi Zheng Thanks. > > Hugh