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 X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9D9A1C54FCB for ; Thu, 23 Apr 2020 18:38:44 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 3DF2F205C9 for ; Thu, 23 Apr 2020 18:38:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="R16+K9YO" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3DF2F205C9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mellanox.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id D0B8D8E0005; Thu, 23 Apr 2020 14:38:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CBC348E0003; Thu, 23 Apr 2020 14:38:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BAB0D8E0005; Thu, 23 Apr 2020 14:38:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0145.hostedemail.com [216.40.44.145]) by kanga.kvack.org (Postfix) with ESMTP id A27118E0003 for ; Thu, 23 Apr 2020 14:38:43 -0400 (EDT) Received: from smtpin29.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 5A9B3181AC9C6 for ; Thu, 23 Apr 2020 18:38:43 +0000 (UTC) X-FDA: 76739980926.29.wave20_11d680b4c215c X-HE-Tag: wave20_11d680b4c215c X-Filterd-Recvd-Size: 8841 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2048.outbound.protection.outlook.com [40.107.20.48]) by imf03.hostedemail.com (Postfix) with ESMTP for ; Thu, 23 Apr 2020 18:38:42 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PsZW3UL9rkUNDcvps8QpoMFe++1/8FFE5QOJ9TXB23SA9B50o3PuIaGIgyMsY0J2M+Jo03MgWIhQr3o5B46UB7qPdXFmoKRCUl29lz90JY4sZ7Oy6WyeqNxlzOBZU339h1eL8osYbdXucmyrRxOICAQeiOON/nlYy7A5vxhPtoJKf7OrChXbIFV2ubR/bMPDfURpnWHZmdQArfD3NtTkc8YtdADv7k0Wd3jsj4d0d1gSEUwHCUy/9MYxyT0Wo2cl1D6aaWx1zN1U4PqZKAUczhTNXyMWExhj64dfGd0/ON+eJO6M2TyKAzPdBjDaE055xnHurt/G7C2RCYttmLN3oA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WCn2j5tVqqfegajL4MGICWThXbdOjzvJgJp5dJEL5N4=; b=W3hySFdSLrZjcmX7QBaJ82Wo56FlW0MvVftcU538XBW4ceyaoSKoFRcjr1j/LiFYVYmTfd5N/W58XwH/TWsbHWn82Az3cKDWhdg2s2Sns2LVoj0jG50hdrM7G/HmYzIb0lLvGPIUYog8ifI/L/3M2LibprL9Eb1cusVA6aMG8IipR/hn1iwgQcaVW8jXbwt4tVyY6f9sJbkro/oWI0AVfP/kbVSbTtbLjVlAFOz2Tbv5rE6Il0OtwPwuFsSxeO8zLOvxB24+4dQHToC5pcNYHzU68AKV3mXXKMRSGZnlTve8UzUnpC3gu2dvT9ThO1CFSdNnjDvl5bNoY6lMD1fU0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WCn2j5tVqqfegajL4MGICWThXbdOjzvJgJp5dJEL5N4=; b=R16+K9YOVBE6LA/WDslZxQQskFO3uWB0GZWHSE9+Pryh+qV7UM68zvVz7l2gjPbxv97hfNC22Bnqrg0iv9UujmEXxm6xcGlfZ2hjXfJX8utbO88O+I/YFztDXpAOkSvkc3K2LBbmpm6C9QRZha3YUKP2IDJKjQA2nFM9uMRPJos= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=jgg@mellanox.com; Received: from VI1PR05MB4141.eurprd05.prod.outlook.com (2603:10a6:803:44::15) by VI1PR05MB4701.eurprd05.prod.outlook.com (2603:10a6:802:60::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Thu, 23 Apr 2020 18:38:39 +0000 Received: from VI1PR05MB4141.eurprd05.prod.outlook.com ([fe80::a47b:e3cd:7d6d:5d4e]) by VI1PR05MB4141.eurprd05.prod.outlook.com ([fe80::a47b:e3cd:7d6d:5d4e%6]) with mapi id 15.20.2921.030; Thu, 23 Apr 2020 18:38:39 +0000 Date: Thu, 23 Apr 2020 15:38:35 -0300 From: Jason Gunthorpe To: Mike Kravetz Cc: Li Xinhai , linux-mm@kvack.org, Andrew Morton , Punit Agrawal , Longpeng Subject: Re: [PATCH] mm/hugetlb: avoid unnecessary check on pud and pmd entry in huge_pte_offset Message-ID: <20200423183835.GA13640@mellanox.com> References: <1587646154-26276-1-git-send-email-lixinhai.lxh@gmail.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: MN2PR22CA0008.namprd22.prod.outlook.com (2603:10b6:208:238::13) To VI1PR05MB4141.eurprd05.prod.outlook.com (2603:10a6:803:44::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mlx.ziepe.ca (142.68.57.212) by MN2PR22CA0008.namprd22.prod.outlook.com (2603:10b6:208:238::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.13 via Frontend Transport; Thu, 23 Apr 2020 18:38:39 +0000 Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1jRgk7-0006LD-PB; Thu, 23 Apr 2020 15:38:35 -0300 X-Originating-IP: [142.68.57.212] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 03b9465e-fb67-40fc-16c8-08d7e7b58a36 X-MS-TrafficTypeDiagnostic: VI1PR05MB4701: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3968; X-Forefront-PRVS: 03827AF76E X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR05MB4141.eurprd05.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(10009020)(4636009)(136003)(39860400002)(396003)(346002)(366004)(376002)(26005)(36756003)(478600001)(9746002)(66476007)(186003)(81156014)(2616005)(8936002)(66556008)(8676002)(52116002)(33656002)(86362001)(1076003)(54906003)(9786002)(66946007)(316002)(53546011)(6916009)(2906002)(5660300002)(4326008)(14583001)(24400500001);DIR:OUT;SFP:1101; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DVmgbDDzwJ0rd9blc2XlyRXOIjed0fzaxMWq8Fb4LekIDejtXN7jB19Xsrzdg7bAZ8xBLyxWzndWNPsXFGIAHD3xadEzKMMHaZmItBzcWUSs3xJmg4AbTkE7NLAUSxEanEsKLSiWoDKXim+WbbDHRBGeO5i7/JOrB2SEfcYMXs9MBBHTPm0JQlT+n/yD1FWjvYiZNzslStWLExSPw8fiaN7rJ68R9cPUoH48TD1gHAaXKD0wJwk1fAlOJymFsixx/av4LzXelb26rxdVvkTYIkXIq8bGWLFQwol3uITjhfK8eJLoexpXGw5eJtV1hlU0hEThCoSFk8tXasCEpmqOI8b7x2okc88N6FpdVgSJ5QDnzGyerM5VPiZMQFEboRW1W9yUftXaW+sp3QxZPlht5COUShvmhEGitoJMRYYBbMucKCt6uj5F9zVMAKQeWM4UIIlyuUOPqcBmu/TH40gI0m9VtDxcOf1CvJvAk3KogKKcA+5QmFHWX/I0tv0ZQCUM5IZ2d8H4WDwEkTHVxOc9Nw== X-MS-Exchange-AntiSpam-MessageData: d/Ng7/VL2Vukad5HUYS3avO96Duo6Ju3f6q5egHgZOHPMWEdKnIbloZlJlEYeSmboLENBZiOWE2rWSww++WKVqJVcClaGeonFPo/kyfySfpFUQQwIoCkXZlkwyqmMrFpPAlfR/JNjVgogcMBv2TR4g== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 03b9465e-fb67-40fc-16c8-08d7e7b58a36 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2020 18:38:39.2350 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3NtvqdITReZVYR0puw8IKdE4w8sJTSd5cAamzragTF1kFT7MMoXRZDNaJTlnoN1g6NUNBu0AowI+e/kE2MtjOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4701 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 Thu, Apr 23, 2020 at 11:14:28AM -0700, Mike Kravetz wrote: > Cc a few people who have looked at huge_pte_offset() recently. > > On 4/23/20 5:49 AM, Li Xinhai wrote: > > When huge_pte_offset() is called, the parameter sz can only be PUD_SIZE > > or PMD_SIZE. > > If sz is PUD_SIZE and code can reach pud, then *pud must be none, or > > normal hugetlb entry, or non-present (migration or hwpoisoned) hugetlb > > entry, and we can directly return pud. > > When sz is PMD_SIZE, pud must be none or present, and if code can reach > > pmd, we can directly return pmd. > > > > So, after this patch, the code is simplified by first check on the > > parameter sz, and avoid unnecessary checks in current code. > > > > Signed-off-by: Li Xinhai > > Cc: Mike Kravetz > > Cc: Andrew Morton > > mm/hugetlb.c | 24 +++++++++--------------- > > 1 file changed, 9 insertions(+), 15 deletions(-) > > > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > > index bcabbe0..e1424f5 100644 > > +++ b/mm/hugetlb.c > > @@ -5365,8 +5365,8 @@ pte_t *huge_pte_offset(struct mm_struct *mm, > > { > > pgd_t *pgd; > > p4d_t *p4d; > > - pud_t *pud, pud_entry; > > - pmd_t *pmd, pmd_entry; > > + pud_t *pud; > > + pmd_t *pmd; > > > > pgd = pgd_offset(mm, addr); > > if (!pgd_present(*pgd)) > > @@ -5376,22 +5376,16 @@ pte_t *huge_pte_offset(struct mm_struct *mm, > > return NULL; > > > > pud = pud_offset(p4d, addr); > > - pud_entry = READ_ONCE(*pud); > > - if (sz != PUD_SIZE && pud_none(pud_entry)) > > - return NULL; > > - /* hugepage or swap? */ > > - if (pud_huge(pud_entry) || !pud_present(pud_entry)) > > + if (sz == PUD_SIZE) > > + /* must be pud_huge or pud_none */ > > return (pte_t *)pud; > > - > > - pmd = pmd_offset(pud, addr); > > - pmd_entry = READ_ONCE(*pmd); > > - if (sz != PMD_SIZE && pmd_none(pmd_entry)) > > + if (!pud_present(*pud)) > > return NULL; > > - /* hugepage or swap? */ > > - if (pmd_huge(pmd_entry) || !pmd_present(pmd_entry)) > > - return (pte_t *)pmd; > > + /* must have a valid entry and size to go further */ > > > > - return NULL; > > + pmd = pmd_offset(pud, addr); > > Can we get here with sz = PMD_SIZE and pud_none(*pud)? Would that be > an issue for the pmd_offset() call? Certainly pmd_offset() must only be called if the PUD entry is pointing at a pmd level. AFAIK this means it should not be called on pud_none(), pud_huge() or !pud_present() cases. Jason