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 E59B1C4167B for ; Tue, 28 Nov 2023 07:33:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5B0446B0284; Tue, 28 Nov 2023 02:33:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 55F596B0288; Tue, 28 Nov 2023 02:33:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 44E586B0289; Tue, 28 Nov 2023 02:33:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 38E666B0284 for ; Tue, 28 Nov 2023 02:33:37 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 0B9DD80116 for ; Tue, 28 Nov 2023 07:33:37 +0000 (UTC) X-FDA: 81506548074.02.8FD89DB Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) by imf24.hostedemail.com (Postfix) with ESMTP id 22EFE18000F for ; Tue, 28 Nov 2023 07:33:34 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dHRDuiqX; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.182 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701156815; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=VH1Rb27yFHn7O/0T0PrrTfYL/mFxyCVzddNEwA2dw8s=; b=la9i/g5510sYp9YLkM7dbR4NGwkVhUwFZB6AfAHRdLnLjB5pCHUQ0r4LR9IoS1qQ9h+QJ2 9DFPFAos741Hflr32rcWzfD1X7vv/HoXxDK0jKv9pBA4ATdPOhhjJHBga87iUktPI0Y4/n Ek+UoV1tqwbh5+9ZeaK2oatRLxClRLg= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dHRDuiqX; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.182 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701156815; a=rsa-sha256; cv=none; b=a1gWk9qRb/QN34Fsfw/XP64Em0qnVqb4HNYNxc+vlwdXR6u2g7TyDbXwpQFPRkv/0cwnq1 f1lLK1OVVYZoyqT8oGLkLbV2UmYXTKpaoyAhO42Wkkhh516tS0EPKh9MrluGAX4IgMKRm6 hFTD6UuV98RZVwhAZypQPFUHP3gFBMY= Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-6b20a48522fso4143882b3a.1 for ; Mon, 27 Nov 2023 23:33:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701156814; x=1701761614; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VH1Rb27yFHn7O/0T0PrrTfYL/mFxyCVzddNEwA2dw8s=; b=dHRDuiqXP798b9NyYM7JCxAyJATm4t+pNuTC436bqi2YT00RBSfp7Xs0rXCYOYn2cK 2GS7m63h2xQ2ZjjZTP73pa5Ta7jDCEIAcUeqQoptMeDrM45+dYB/nVHzq+SLKWs9ET3z 33SCeiFoJ2W6fGsHzmkbgH4zSum+71zl89m+8IlNl61ch2oSkG7Ycoo81hH+1j6zjbRI iP54ASmjeRNIl6xXbfKQhQs7XVvzeDcINkWprXxyMXcVCGXgptcN3Vui24IuzPI+wFbp fP9bUXe2NdOSFDUBuIXlPh19v1FwadMz8Ldnk/ZijKDVgZYdpD/JvcBSkM0gWsXttHrk Pi7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701156814; x=1701761614; 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=VH1Rb27yFHn7O/0T0PrrTfYL/mFxyCVzddNEwA2dw8s=; b=dBKX/uVwlqZHTkhdqqa28uU89ZYZnZGYk8w1fGZa0qhFZl+gsGRTnTFYEnfEvbAX5k tn7MKR0XR3+pwXn/9ja6OZV36uX4vip11BSlwx15pIHZ4r0Wf9LpzrqZB68726XVQmZ+ acwdwNwCW3c6kUg4pKoxDX3qXkejw6xL9MOkGdHhLInrOJqIIS42XtiKBbbwDNOAI1il heBCDTHkk1DMsU7TuUZKIMgYw+x1aQRZoaZvX9WijZwx9/UwxKlPDjGz42GCEkxe3ZEz xWEoHNFvd9ujiG7D1991r8g4Rc6wMzZit/7Cr13f0ALvUcn//CxIbB6oY2jrX+bXk61O NXYw== X-Gm-Message-State: AOJu0YwSXiAZZ2slAYX24Nljv0TD1t9NKXiMya/fWiEdk33MUKml/z2W mYIbb6bIvYEtvbVMza58a8c= X-Google-Smtp-Source: AGHT+IEexFVKzHb/6CiIvmjINFN9eF6KzNFopoAPNeC4egDMT8Q1P7EdUjMYDSDft99pcEnAbx6mLQ== X-Received: by 2002:a05:6a20:4419:b0:187:4ee0:e95e with SMTP id ce25-20020a056a20441900b001874ee0e95emr16729514pzb.52.1701156813729; Mon, 27 Nov 2023 23:33:33 -0800 (PST) Received: from barry-desktop.hub ([2407:7000:8942:5500:6e62:da63:8968:8aec]) by smtp.gmail.com with ESMTPSA id y11-20020a170902864b00b001cfdb0d4268sm2310821plt.165.2023.11.27.23.33.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Nov 2023 23:33:33 -0800 (PST) From: Barry Song <21cnbao@gmail.com> X-Google-Original-From: Barry Song To: ryan.roberts@arm.com Cc: akpm@linux-foundation.org, andreyknvl@gmail.com, anshuman.khandual@arm.com, ardb@kernel.org, catalin.marinas@arm.com, david@redhat.com, dvyukov@google.com, glider@google.com, james.morse@arm.com, jhubbard@nvidia.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mark.rutland@arm.com, maz@kernel.org, oliver.upton@linux.dev, ryabinin.a.a@gmail.com, suzuki.poulose@arm.com, vincenzo.frascino@arm.com, wangkefeng.wang@huawei.com, will@kernel.org, willy@infradead.org, yuzenghui@huawei.com, yuzhao@google.com, ziy@nvidia.com Subject: Re: [PATCH v2 14/14] arm64/mm: Add ptep_get_and_clear_full() to optimize process teardown Date: Tue, 28 Nov 2023 20:32:54 +1300 Message-Id: <20231128073254.37870-1-v-songbaohua@oppo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231115163018.1303287-15-ryan.roberts@arm.com> References: <20231115163018.1303287-15-ryan.roberts@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 22EFE18000F X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: qytwwtbrn7nmtiws38ntwfm1895h9mzq X-HE-Tag: 1701156814-386888 X-HE-Meta: U2FsdGVkX1+CsFlEAabMrFgL4QqhEctBIw4R2QnIo0LxnaHEiLKQY1Rphg6pDSZJoq61WvyCi1bLlfFKZQC3RqAv1CemrhSTDqih3WnobuO1/ePks5VYa+cK+XziLl/rHbbwGoi8y5QSU2kfS+NlnM0kr0oHMw5m+mZn04k8ipOyJaVoYB85SiVlLh0S8QaAqVHORDcltsSsG6Dnp40zS5eLpbodIa4WWJR429Rd/+A77VlaylmhtdyiBo7sdzrWlpCHsgFekaJ1JR/mONUSARZr+tF3vhrrRIJWpG7hmnM5edf08QkdVpO8sR1XEqtYotuskfafEmMfE7T1Xl4zQd7Nk7xLZ9xwTlJTrsInsZru5/qfNxaNtbBEQJbVBPDAdJBns/q0Q3nHQqaKbYJha68Yartut/SJjSnEKmszyryPYL0Bn5LjcUrGsy+Dvpsav9PNPoD+K9qJU6s/FFev7t9v4xEocNzK35ViVOXxfULajUhZt4QA5vDoTfR+UDQZmVHgljA5bVxRrGzj/8R3rNElZajIEV27EgUYGgvub95TScj1f8pXIl80+L52ACXxFunu078dUi4hkFq37MZeqEiwEuc5TgrG3NcZMBkrfANGHDqDnBjMzAtW9abT6SzbjZ+soKgk3Obbzm+Z7PcVqklnqZ9yS1kjAY5vREiTpyUuzaLl47jd++zadw8y0UHXMlwnBeuGSEaJ95pWt4xfkCZvvY7Zf5iWsPhTsJV1vTAtgIW3QZNqUdpTJ1eUAwjRlhjQ+aAco07S3p/8qcRjQFT1Qhnew7dX/Qn/e0xTR8p3vtrcI1tp/r4MCH9w0KkeA0ASyXU5MNChKuQAkopea+SP5LUJI3hbnO8bBbJzIZFlVy24of+CGIUykgiCsQRJ0pgr2XtdyNtvGyuCQPKmhiuw0KDHCTyMBdgFE6D4i83KrGhPQoIo1okaxqDcDbuZsydgLw4ge1//N7FyU8B Y+y/LMVL x08Jwaqc4pJMc+FLjYE7M+ggQIlrErRT2+4BrsbKqEh7Olx9HOfnwjrgEV5bm3FxJ/eY9C53NNW5CcgPOzMVZsKziOFOvVBaU4vku1lqf32BVhekPeioCKjJkVUadsmSUxunjt+XuzsXiGoVbT1e8V6xSRYuqilP9l7BgJfsdkn5YsrMvgnQbhTBaBXrzvZzOWe6N6S9syRXgTo9jAiAMKqsiMQT6I8VXfDSfQ/4nVEQDvUmoovlgmNveC/anmU4sz7ft18rHLgqdDN2QCjQWJI7SAIaP0KUiO6HtbZEOxo7R5UsGCajU9Pr3b1md+LBXwdQ7VWLGPNqhLrCNOkemxBt5g6bj9SJi1zYOGYVvey1DlyDDo7nZSUNZ/2+570QeBgRsUGgiOhSgn8Don55fMym1b90vGvhYWii4SpAzxWPMksZJjSkEvca3KBFb6W0ya0FFKaI/BKEyz8OB7ZsV3qT8h8xYah0BbYyvb60Ouqn7eFX074VhWOpr4D78pw86yiLzcrLO++v4C9PRRZVJC62Ls0n23dXQHx5csagewlQ8FKNlXxgVzygsE3rvdTMdZW+EsTG4uqsgTkA= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: > +#define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL > +static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, > + unsigned long addr, pte_t *ptep, int full) > +{ > + pte_t orig_pte = __ptep_get(ptep); > + > + if (!pte_valid_cont(orig_pte) || !full) { > + contpte_try_unfold(mm, addr, ptep, orig_pte); > + return __ptep_get_and_clear(mm, addr, ptep); > + } else > + return contpte_ptep_get_and_clear_full(mm, addr, ptep); > +} > + Hi Ryan, I feel quite hard to understand the code. when !pte_valid_cont(orig_pte), we will call contpte_try_unfold(mm, addr, ptep, orig_pte); but in contpte_try_unfold(), we call unfold only if pte_valid_cont() is true: static inline void contpte_try_unfold(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte) { if (contpte_is_enabled(mm) && pte_valid_cont(pte)) __contpte_try_unfold(mm, addr, ptep, pte); } so do you mean the below? if (!pte_valid_cont(orig_pte)) return __ptep_get_and_clear(mm, addr, ptep); if (!full) { contpte_try_unfold(mm, addr, ptep, orig_pte); return __ptep_get_and_clear(mm, addr, ptep); } else { return contpte_ptep_get_and_clear_full(mm, addr, ptep); } Thanks Barry