Received: by 2002:a05:6358:701b:b0:131:369:b2a3 with SMTP id 27csp3433712rwo; Mon, 24 Jul 2023 10:55:48 -0700 (PDT) X-Google-Smtp-Source: APBJJlH1AZNdGdiLMV75D/7fMdnaX3oZ/8jb6ofojZUMv3HTmSsa8YcFhgbzXeetTZHsuEtaXy9I X-Received: by 2002:a05:6358:7e44:b0:134:c739:75f7 with SMTP id p4-20020a0563587e4400b00134c73975f7mr5238794rwm.12.1690221348681; Mon, 24 Jul 2023 10:55:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690221348; cv=none; d=google.com; s=arc-20160816; b=qyBcUzYeGEVTH4oQxxWn3BoxGV8uEO5fWaRn43VRSBPt49r7dfPefIKl2uPH9MXUjJ C8wnm/gyp6IoE8Zi7OxCUS6gEzTifO0DfwunVn5+Tz80z+EUKsdspIMtzj5cG/0bH0vV yQdLETFxa8tV1BXOGNO6OOtF5lkeYodqV1c3kD/10qZxHHMqM0q7XN8gLlBRfWn5U0WO Xw7wfG16rr1kFBTazI8wX1mzBe0Wg/eWLOA9ZnrvL978llK5mdgCEeNawyHzHe+prxeM LW2faaa7VAA2Suf3YbJuFT2xfvdLaHgXVLdysTIVkkW3toHzSeaJM+RcpiKFurM6ee5f 1lBg== 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=Z7FhzluX97ais6rpFOT2+/vgEtB6oAG9cMbMYQDVkG8=; fh=c890Ye8ptzbMS/tUbHluTcX5s06pjoPV35JzPctInwo=; b=XDkiO6isxe1c04ImXUotydX9t3wfsPKN8hFEqXBwqnHe6zb7Yq44icXzsllPODW861 uDPx1ODtXKe+Mdb24Dm3k7/2j9R48iJ5HUFbrAni4H1c1lcGLObuUf49sfBvj0SEPP8m Mwy3RPmFfSR7BD+kibRUFvrX2eeLi6VZlPuKH3Ha0/seI2G0kU/AHFW3nRram1X8ONgl alT5OK7YnszNYZRhL+rqetY+7SNrSM07JmlHvQzeTFFw1CwtNm/AWgw1tfTifANJ6BiF cefJTeIuBWquiPwafFtJ/g6CJtZjqRyEmuwkeWI8GttSGJOkWvvQdIU9f3l1R/Q3U2Ux 5W5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=CtK0goGQ; 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=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 9-20020a630209000000b00553b006cd9fsi9203334pgc.728.2023.07.24.10.55.36; Mon, 24 Jul 2023 10:55:48 -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=@intel.com header.s=Intel header.b=CtK0goGQ; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231475AbjGXRkL (ORCPT + 99 others); Mon, 24 Jul 2023 13:40:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229837AbjGXRkJ (ORCPT ); Mon, 24 Jul 2023 13:40:09 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AD6F9C0; Mon, 24 Jul 2023 10:40:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690220407; x=1721756407; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=c5Z6pBHbsES+jLFL8lHM4LvuACi7M2wwU23RdacU0yA=; b=CtK0goGQkODinWx2CYn5Iyvj6TNpOz6xmeFPka2f81gfQD7UH9qAh7/9 IZhN3MzQ0+6pb4zRhg8PUriOR3lv4+QPaqW8Kr8UrVJEd2F2SdqRmr1i8 JB2wE8wfxpAcnzkkq6iX3Qa6itlq+GppDlMj5lQ9xfVinegPEWVB+//xb tR9PA19OPZCBxd3fHT7XFoBtKrZoD0WEoWuC68FzH4ZCTsVGmJeUyjyER +zgML7vpKOfJrvreCELAPmk52oT/Vwoi/30kV/ZagwyTIJI5uQ1h45csb fIi+/PfTVLBY4T22Ov2Wb3sBrWCJBzas6qtxsLDsFGqhuQwYxvycV0sFT A==; X-IronPort-AV: E=McAfee;i="6600,9927,10781"; a="364968436" X-IronPort-AV: E=Sophos;i="6.01,228,1684825200"; d="scan'208";a="364968436" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jul 2023 10:40:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10781"; a="849718874" X-IronPort-AV: E=Sophos;i="6.01,228,1684825200"; d="scan'208";a="849718874" Received: from zhihuich-mobl.amr.corp.intel.com (HELO [10.251.18.158]) ([10.251.18.158]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jul 2023 10:40:05 -0700 Message-ID: <2284d0db-f94a-e059-7bd0-bab4f112ed35@intel.com> Date: Mon, 24 Jul 2023 10:40:04 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [RFC PATCH v2 20/20] x86/mm, mm/vmalloc: Defer flush_tlb_kernel_range() targeting NOHZ_FULL CPUs Content-Language: en-US To: Valentin Schneider , Nadav Amit Cc: Linux Kernel Mailing List , "linux-trace-kernel@vger.kernel.org" , "linux-doc@vger.kernel.org" , "kvm@vger.kernel.org" , linux-mm , bpf , the arch/x86 maintainers , "rcu@vger.kernel.org" , "linux-kselftest@vger.kernel.org" , Steven Rostedt , Masami Hiramatsu , Jonathan Corbet , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Paolo Bonzini , Wanpeng Li , Vitaly Kuznetsov , Andy Lutomirski , Peter Zijlstra , Frederic Weisbecker , "Paul E. McKenney" , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Andrew Morton , Uladzislau Rezki , Christoph Hellwig , Lorenzo Stoakes , Josh Poimboeuf , Jason Baron , Kees Cook , Sami Tolvanen , Ard Biesheuvel , Nicholas Piggin , Juerg Haefliger , Nicolas Saenz Julienne , "Kirill A. Shutemov" , Dan Carpenter , Chuang Wang , Yang Jihong , Petr Mladek , "Jason A. Donenfeld" , Song Liu , Julian Pidancet , Tom Lendacky , Dionna Glaze , =?UTF-8?Q?Thomas_Wei=c3=9fschuh?= , Juri Lelli , Daniel Bristot de Oliveira , Marcelo Tosatti , Yair Podemsky References: <20230720163056.2564824-1-vschneid@redhat.com> <20230720163056.2564824-21-vschneid@redhat.com> <188AEA79-10E6-4DFF-86F4-FE624FD1880F@vmware.com> From: Dave Hansen In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE 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 7/24/23 04:32, Valentin Schneider wrote: > AFAICT the only reasonable way to go about the deferral is to prove that no > such access happens before the deferred @operation is done. We got to prove > that for sync_core() deferral, cf. PATCH 18. > > I'd like to reason about it for deferring vunmap TLB flushes: > > What addresses in VMAP range, other than the stack, can early entry code > access? Yes, the ranges can be checked at runtime, but is there any chance > of figuring this out e.g. at build-time? Nadav was touching on a very important point: TLB flushes for addresses are relatively easy to defer. You just need to ensure that the CPU deferring the flush does an actual flush before it might architecturally consume the contents of the flushed entry. TLB flushes for freed page tables are another game entirely. The CPU is free to cache any part of the paging hierarchy it wants at any time. It's also free to set accessed and dirty bits at any time, even for instructions that may never execute architecturally. That basically means that if you have *ANY* freed page table page *ANYWHERE* in the page table hierarchy of any CPU at any time ... you're screwed. There's no reasoning about accesses or ordering. As soon as the CPU does *anything*, it's out to get you. You're going to need to do something a lot more radical to deal with free page table pages.