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 A0CB7C433EF for ; Fri, 11 Mar 2022 22:46:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E92C28D0002; Fri, 11 Mar 2022 17:46:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E41378D0001; Fri, 11 Mar 2022 17:46:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CE2718D0002; Fri, 11 Mar 2022 17:46:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0082.hostedemail.com [216.40.44.82]) by kanga.kvack.org (Postfix) with ESMTP id BE6E88D0001 for ; Fri, 11 Mar 2022 17:46:01 -0500 (EST) Received: from smtpin20.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 6E2FF9F5D9 for ; Fri, 11 Mar 2022 22:46:01 +0000 (UTC) X-FDA: 79233589722.20.E7D7A36 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by imf01.hostedemail.com (Postfix) with ESMTP id 0840940027 for ; Fri, 11 Mar 2022 22:46:00 +0000 (UTC) Received: by mail-pl1-f179.google.com with SMTP id m2so8876098pll.0 for ; Fri, 11 Mar 2022 14:46:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=3sE0hsTRFQr0UR7ZgIkijg0A6cF4rdyBGwexFxGWak0=; b=d4j1wnZLFeuAP6pe6UmjizutXxjN/90i+itzVjXCw2tnraFMFGpaudB2AOr/xydZvO s5MLqtnNGw19UEgDSOITvnGk3dn/z82IX0y467iJceT6Qzxe5ppnqcnfZaS6Fi5AMK7e qxtcOicC/1HajhvzsoBHIS5ptoXtfJL+DhrK2uxfin5HHPIz9UFQ2AOkoeT5Lge1BG/s 1WQq3Me/i4z8VRVIGKKt4uUgkHkHU/QTQSWDJF4zSbbeFZhD2+OopSRlkP7lZzhpB6PH gpMQjxrJNV1ntUKRjymq9bgB+LouxmRjJtuEkwwmPldZuPoDWy/jgvTetw8M7QFK6tqG gg6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=3sE0hsTRFQr0UR7ZgIkijg0A6cF4rdyBGwexFxGWak0=; b=YqjWQVDrWo+cSpn7FMLWiNMrhNjQZC/pSIgaCWZrbUSiXBYc2Yqs8JeNWOR3anjb+P P5yiBG1A9YpE+yzlriea5d2XfqkzijTTKsMw70Dj6wn79v8fBtsURPTzxVdyFJHJ+GEX v+feHyyojSF/Q0DF4hIXSuKkBfuYVKBjUHJ3Y/IrJLyiSShfC5znVQ8MuOtc9Px8o3qI dieK3BZtfNm/QIrpdGWPaccnWnYZ2vX67RQvlCHdnSOIdDD9QlvxR0hjT9lRexSY/wQx Y+sk0kKzUhzU3qehNQ/3dhoXSjjx3Xk4/DGsja65uqJhQFEaVnCZWrgH8hTMuhrfsIky cmmg== X-Gm-Message-State: AOAM533l4l2njwZ2ZTtPYBCK0qd9bJ/1rKz1asBZusAyr2/LAdz7r8zD 83p5YhOnCwS+hc+UE6XcFTUl6sdTxnI= X-Google-Smtp-Source: ABdhPJylAwO6QX8/w4gOqjI6xnaSrwUgdOE0iIVt39rYKpjRjDT6cNHot8whX/kC1AnL3Q9pggcJvg== X-Received: by 2002:a17:90b:4f44:b0:1bf:61b2:4560 with SMTP id pj4-20020a17090b4f4400b001bf61b24560mr23619520pjb.245.1647038759513; Fri, 11 Mar 2022 14:45:59 -0800 (PST) Received: from smtpclient.apple ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id j13-20020a63594d000000b003639cf2f9c7sm9422236pgm.71.2022.03.11.14.45.58 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 Mar 2022 14:45:59 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 15.0 \(3693.60.0.1.1\)) Subject: Re: [RESEND PATCH v3 4/5] mm/mprotect: do not flush on permission promotion From: Nadav Amit In-Reply-To: <20220311190749.338281-5-namit@vmware.com> Date: Fri, 11 Mar 2022 14:45:57 -0800 Cc: Linux Kernel Mailing List , Andrew Morton , Andrea Arcangeli , Andy Lutomirski , Dave Hansen , Peter Zijlstra , Thomas Gleixner , Will Deacon , Yu Zhao , Nick Piggin , x86@kernel.org Content-Transfer-Encoding: 7bit Message-Id: <0FFB7FA7-4F08-47EB-8AAE-400867E96DE4@gmail.com> References: <20220311190749.338281-1-namit@vmware.com> <20220311190749.338281-5-namit@vmware.com> To: linux-mm@kvack.org X-Mailer: Apple Mail (2.3693.60.0.1.1) X-Stat-Signature: 9f9o8pri9khxm5aqsp31zhne9eep3sku Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=d4j1wnZL; spf=pass (imf01.hostedemail.com: domain of nadav.amit@gmail.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=nadav.amit@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspam-User: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 0840940027 X-HE-Tag: 1647038760-437932 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 Mar 11, 2022, at 11:07 AM, Nadav Amit wrote: > > From: Nadav Amit > > Currently, using mprotect() to unprotect a memory region or uffd to > unprotect a memory region causes a TLB flush. At least on x86, as > protection is promoted, no TLB flush is needed. > > Add an arch-specific pte_may_need_flush() which tells whether a TLB > flush is needed based on the old PTE and the new one. Implement an x86 > pte_may_need_flush(). > > For x86, besides the simple logic that PTE protection promotion or > changes of software bits does require a flush, also add logic that > considers the dirty-bit. If the dirty-bit is clear and write-protect is > set, no TLB flush is needed, as x86 updates the dirty-bit atomically > on write, and if the bit is clear, the PTE is reread. > > [snip] > + */ > +static inline bool pte_needs_flush(pte_t oldpte, pte_t newpte) > +{ > + /* !PRESENT -> * ; no need for flush */ > + if (!pte_present(oldpte)) > + return false; > + > + /* PRESENT -> !PRESENT ; needs flush */ > + if (!pte_present(newpte)) > + return true; > + > + /* PFN changed ; needs flush */ > + if (pte_pfn(oldpte) != pte_pfn(newpte)) > + return true; > + > + return pte_flags_need_flush(pte_flags(oldpte), pte_flags(newpte), > + _PAGE_ACCESSED); > +} Looking again at this patch, I think the PRESENT -> !PRESENT is not needed: 1. It might trigger unnecessary flushes for PROT_NONE (or NUMA) 2. Real PRESENT -> !PRESENT is already checked by pte_flags_need_flush(). Let me know if I am missing something. Otherwise I will change it for v4.