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 BA5CAC433EF for ; Thu, 24 Mar 2022 02:12:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 48AFA6B0072; Wed, 23 Mar 2022 22:12:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 439BE6B0073; Wed, 23 Mar 2022 22:12:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 300C16B0074; Wed, 23 Mar 2022 22:12:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.25]) by kanga.kvack.org (Postfix) with ESMTP id 1DB926B0072 for ; Wed, 23 Mar 2022 22:12:45 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id D987A24E55 for ; Thu, 24 Mar 2022 02:12:44 +0000 (UTC) X-FDA: 79277656248.06.D3771C6 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by imf15.hostedemail.com (Postfix) with ESMTP id 59741A0011 for ; Thu, 24 Mar 2022 02:12:44 +0000 (UTC) Received: by mail-ej1-f49.google.com with SMTP id bg10so6404590ejb.4 for ; Wed, 23 Mar 2022 19:12:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=soleen.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=BCOovJyPh0b4zYvl+nTG0Ejb+isbohuepHr7Xg5SeZ8=; b=aqT0DmxhPMdzHQ6ds1qvDm0Gqk/I2X8ppXoBJCVmqFF7EOyhFa8PFPf7PnmiiZl85G bJmb0HIn27+yvh7bbJJJ5m2qrODaPlNDCdEZZMHkevjqNOvrYDCvPYK2vQ5lgoIu2BRv 7w5sy6kQG5FQm0AnuSecon0cZcbw9iz3HZisUfPKhux/Ks5SG8pJY+kyFM0rbMp18EJw oFYgTvLim1rFKqLN5nA6585PcRceunwoXs5Yr7ALwFOp5R8fCo8qm2oQjI07xKruS/vb DUgzpNAI6sEacBHrhiemU5rWKI4pPNRB/Wv2bB13IOkB20UplQrsrEPgrOZU/cmOoXXm 0W2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=BCOovJyPh0b4zYvl+nTG0Ejb+isbohuepHr7Xg5SeZ8=; b=kSkkcWgGD1SdsR0F5vQaYj+qMEcYHujRVbBjQRPQNbZm4vkct4Xh/OwCnLc7fQkNKF XAXgvWS2WDIXIkKz/K26hzAZh/WrT0MNil1DutvaeXR7McUpR/4c5/doSvdS7ptzddE1 quzRn23ASvLhpy03UUzKBdUw4D1hMypzlAsFVTiQuday7bUYrJmTjGWQQm6AFSpt6e36 kwIGKmCe/FOYmlEgapeVEAMUbS4aMrPUn7A2Hv8yT2r4y47jJW8rtEZQgmyW13AgfGrx gKSrQie+TGGn5SvfWX3GGwv3u8AwyxYLj9rNPdOZbsARt/1QysPFlqn6zoFYcASdEUru 5w1A== X-Gm-Message-State: AOAM532QApI4DW3lKWdh09TB6gx3bx4xkVB2QI0AT+EAtEszX/xXy9Af pQhAHFHY4R9IRgp0sGLb0dIrLXHCUKt6q7fQ/yPXWA== X-Google-Smtp-Source: ABdhPJzpZ1gIybuFI4pn4eTHzXP1tUx/TNO22fj/wIoPss7PW3L5NtzpTcrmPLJdonNgbkRnQvB642mK2quWLD0+UCk= X-Received: by 2002:a17:907:9602:b0:6df:e82c:f84 with SMTP id gb2-20020a170907960200b006dfe82c0f84mr3302273ejc.590.1648087962953; Wed, 23 Mar 2022 19:12:42 -0700 (PDT) MIME-Version: 1.0 References: <20220322144447.3563146-1-tongtiangen@huawei.com> <20220322144447.3563146-3-tongtiangen@huawei.com> <0c95c24d-b980-a8b3-9c68-e10d16e05e10@huawei.com> In-Reply-To: <0c95c24d-b980-a8b3-9c68-e10d16e05e10@huawei.com> From: Pasha Tatashin Date: Wed, 23 Mar 2022 22:12:02 -0400 Message-ID: Subject: Re: [PATCH -next v2 2/4] mm: page_table_check: add hooks to public helpers To: Tong Tiangen Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)" , "H. Peter Anvin" , Andrew Morton , Catalin Marinas , Will Deacon , Paul Walmsley , Palmer Dabbelt , Albert Ou , LKML , linux-mm , Linux ARM , linux-riscv@lists.infradead.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: 8zp4g54snegskwhzuf7rxjcygnhbytxt Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=soleen.com header.s=google header.b=aqT0Dmxh; spf=pass (imf15.hostedemail.com: domain of pasha.tatashin@soleen.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=pasha.tatashin@soleen.com; dmarc=none X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 59741A0011 X-HE-Tag: 1648087964-901583 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 Wed, Mar 23, 2022 at 10:07 PM Tong Tiangen wrot= e: > > > > =E5=9C=A8 2022/3/24 1:42, Pasha Tatashin =E5=86=99=E9=81=93: > > On Tue, Mar 22, 2022 at 10:25 AM Tong Tiangen = wrote: > >> > >> Move ptep_clear() to the include/linux/pgtable.h and add page table ch= eck > >> relate hooks to some helpers, it's prepare for support page table chec= k > >> feature on new architecture. > >> > >> Signed-off-by: Tong Tiangen > >> --- > >> arch/x86/include/asm/pgtable.h | 10 ---------- > >> include/linux/pgtable.h | 27 +++++++++++++++++++-------- > >> 2 files changed, 19 insertions(+), 18 deletions(-) > >> > >> diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgt= able.h > >> index 8cd6514e3052..8c85f2eabbaa 100644 > >> --- a/arch/x86/include/asm/pgtable.h > >> +++ b/arch/x86/include/asm/pgtable.h > >> @@ -1077,16 +1077,6 @@ static inline pte_t ptep_get_and_clear_full(str= uct mm_struct *mm, > >> return pte; > >> } > >> > >> -#define __HAVE_ARCH_PTEP_CLEAR > >> -static inline void ptep_clear(struct mm_struct *mm, unsigned long add= r, > >> - pte_t *ptep) > >> -{ > >> - if (IS_ENABLED(CONFIG_PAGE_TABLE_CHECK)) > >> - ptep_get_and_clear(mm, addr, ptep); > >> - else > >> - pte_clear(mm, addr, ptep); > >> -} > >> - > >> #define __HAVE_ARCH_PTEP_SET_WRPROTECT > >> static inline void ptep_set_wrprotect(struct mm_struct *mm, > >> unsigned long addr, pte_t *ptep= ) > >> diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h > >> index f4f4077b97aa..d27fd0ed84a9 100644 > >> --- a/include/linux/pgtable.h > >> +++ b/include/linux/pgtable.h > >> @@ -12,6 +12,7 @@ > >> #include > >> #include > >> #include > >> +#include > >> > >> #if 5 - defined(__PAGETABLE_P4D_FOLDED) - defined(__PAGETABLE_PUD_FO= LDED) - \ > >> defined(__PAGETABLE_PMD_FOLDED) !=3D CONFIG_PGTABLE_LEVELS > >> @@ -259,14 +260,6 @@ static inline int pmdp_clear_flush_young(struct v= m_area_struct *vma, > >> #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > >> #endif > >> > >> -#ifndef __HAVE_ARCH_PTEP_CLEAR > >> -static inline void ptep_clear(struct mm_struct *mm, unsigned long add= r, > >> - pte_t *ptep) > >> -{ > >> - pte_clear(mm, addr, ptep); > >> -} > >> -#endif > >> - > >> #ifndef __HAVE_ARCH_PTEP_GET_AND_CLEAR > >> static inline pte_t ptep_get_and_clear(struct mm_struct *mm, > >> unsigned long address, > >> @@ -274,10 +267,23 @@ static inline pte_t ptep_get_and_clear(struct mm= _struct *mm, > >> { > >> pte_t pte =3D *ptep; > >> pte_clear(mm, address, ptep); > >> + page_table_check_pte_clear(mm, address, pte); > >> return pte; > >> } > >> #endif > >> > >> +#ifndef __HAVE_ARCH_PTEP_CLEAR > >> +static inline void ptep_clear(struct mm_struct *mm, unsigned long add= r, > >> + pte_t *ptep) > >> +{ > >> +#ifdef CONFIG_PAGE_TABLE_CHECK > >> + ptep_get_and_clear(mm, addr, ptep); > >> +#else > >> + pte_clear(mm, addr, ptep); > >> +#endif > > > > I have a preference to use if (IS_ENABLED(CONFIG_PAGE_TABLE_CHECK)) > > instead of #ifdef. The end result is the same. Otherwise it looks > > good. > > > > Thanks, > > Pasha > > . > > I have a little hesitation when making this change , in theory, add if > here may affect the performance a little in some scenarios. However, the > impact on the whole call path should be small. I do not think so, the compiler should optimize out IS_ENABLED() when not enabled, no? > > I will send v3 using if (IS_ENABLED(CONFIG_PAGE_TABLE_CHECK)). > > Thanks. > Tong > .