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 B581EC67861 for ; Thu, 4 Apr 2024 21:28:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2F1666B0082; Thu, 4 Apr 2024 17:28:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2A0776B0093; Thu, 4 Apr 2024 17:28:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 167EE6B0098; Thu, 4 Apr 2024 17:28:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id EA7A56B0082 for ; Thu, 4 Apr 2024 17:28:15 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 86EE7805FF for ; Thu, 4 Apr 2024 21:28:15 +0000 (UTC) X-FDA: 81973137750.21.9B218F6 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) by imf28.hostedemail.com (Postfix) with ESMTP id A914BC0014 for ; Thu, 4 Apr 2024 21:28:13 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=zvsRXm8c; spf=pass (imf28.hostedemail.com: domain of yosryahmed@google.com designates 209.85.221.53 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712266093; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9OUdguqwR0wl7IoJc/6ZxoQ05I+NWMpwGK+WJht4B5k=; b=o9hrJK7H8n1nIA04JtpeFO3TSMhMZZ8f7a5RYy/azJW/2kFAZbFJAF2mDyouWwv3caNgjk 4iOIRck8zWgn/0JLIoa1h5jlMzQxZiOG9ZoMKYwY5vlcuhaDvBsR1JFuygug5h5x1HRzYy /1BNTNXqfcByEC3KgTYoU+pEYp6qyFA= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=zvsRXm8c; spf=pass (imf28.hostedemail.com: domain of yosryahmed@google.com designates 209.85.221.53 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712266093; a=rsa-sha256; cv=none; b=6lt+l2YHeEd3acZluLWrpiQaA3tsEduewaGIbmEzcprCjE0FJ3U4eU5iCBE6lraD1Ze8PR MTYlnvSBMTWQ7MMrYj8H9dEQd3TOWIXKpL4ObwGTMVExIO+7lv30D4XXpeYyI09o65bhU0 faEWdOf7BslCXoRwKw5EvbMLl3lAYe4= Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-343cfa6faf0so586633f8f.0 for ; Thu, 04 Apr 2024 14:28:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1712266092; x=1712870892; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=9OUdguqwR0wl7IoJc/6ZxoQ05I+NWMpwGK+WJht4B5k=; b=zvsRXm8cUKFmXfD/nFbTHUMdYIP5WpNAYnMOBoQ1wXB/tuf5LCDJ/W4l80LZtCHZRu nTLr+TJTU3SLlPeYyidkDn0Xj10hGmgsLAGXF7XxtFnjyGHMEcV9N6//baY3g8iVeKbk dFBlnw4GyfUsJfljUTvnELhf8LOvi2xQQSY3G6oGktQgKqJ8bihq0aU35RD8mJP6a/n8 2rWyV3V/i6U84DiVeVE9TA7Qq1yOSrQUs9VdZwVm8uNWsn3UYehwyQyCMhQDRha3hGkm c9Y/O/JNmfyGNgF9OiTkysnszsRtxjlJlJGJEgll3xXr8NMafqCgLGKlFJGPqzU2bZ9P LZ/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712266092; x=1712870892; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9OUdguqwR0wl7IoJc/6ZxoQ05I+NWMpwGK+WJht4B5k=; b=tt4a5G8kMajoMWvz6iq+3mLrnMDm4ANCvZ/9RwIDWx58zxrdLgDPOJwyQlT2cbOr/C Hm58l/n/CJRcc3AmwVaKgG1o3t7IGG1YzM2dGTCEkt4KIn4TRi9z9h10w4kGP9LiWWCN 8kWW4Lr43x+KM4O+/4Xmd6VaKyXvLGZsFC6Mh7d3cgukIypirZiI6LcRe+TvBk4G0qxg Kx4lvWCKPT0+/HnzGd/j58L1zkrjNUmYiMMWFM7AvHDWNbnb0XPCaAJGP3PPtvtxwHcO k2CSCGV4pbMgsCfsw+ZkZSpUJtdJHshk6xBn6+3ZorgYKxq8RhZPbaMNGXC5PNRwjPSA A+Gw== X-Forwarded-Encrypted: i=1; AJvYcCWxyaDVsaofYLVvpelEAHTzS0qsmokV0KiqJCDyKR1rqfNrAH/rZOnJMgVL0QyHrWROpIDxo/LqH+op1vwY8BdUt+I= X-Gm-Message-State: AOJu0Yz04GKEzbGU4PvDjBr3uaV9h65uoW4FhqQDyY0OoE75ML077GeN r9ZePWk1cxyIw9nQ7tOLc85rGcagyPRLmA4xchQ9hvukjqBVtR9dyueTUgYc/z2Ga8GlMBIonw6 f1IgLT1H1l1ipa1SFSCnaynGqvcXOtx1va+JA X-Google-Smtp-Source: AGHT+IGJXJt3z9AjFNT8jY0zgvGJQUXCyam/rKGlEORAE2+JiSEdT0O8DCZgFu4KuDOhR1WF8ozN+G8rXaz8Y8+rApU= X-Received: by 2002:adf:ce0c:0:b0:33f:84a1:7eb8 with SMTP id p12-20020adfce0c000000b0033f84a17eb8mr3002011wrn.1.1712266091794; Thu, 04 Apr 2024 14:28:11 -0700 (PDT) MIME-Version: 1.0 References: <20240312155641.4003683-1-yosryahmed@google.com> In-Reply-To: <20240312155641.4003683-1-yosryahmed@google.com> From: Yosry Ahmed Date: Thu, 4 Apr 2024 14:27:33 -0700 Message-ID: Subject: Re: [PATCH v2 1/3] x86/mm: Use IPIs to synchronize LAM enablement To: x86@kernel.org Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , "Kirill A. Shutemov" , Rick Edgecombe , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: A914BC0014 X-Rspam-User: X-Stat-Signature: ytphwyepbdoiycakdtna98q6tepqc1uz X-Rspamd-Server: rspam01 X-HE-Tag: 1712266093-137055 X-HE-Meta: U2FsdGVkX1+qbypQtcrBGhv3B+0JUv2AjFZu1O+qW6+CpWv45Q6ETWUkSfTllennhwTJutyBghRWjCkPvaTBaeiClvO8bsANR/S0VN+Z26ZPFm+zGaEr9yzKEezdFUNZWYIQ675eCDuBgzQeqtYBvPdDt7KYB63gsz9pFyuJNZQ8jWdePpxRIBl/mnUxRsdkgp9+QBdZ55GSA0yklpqgti3RLJv2trnGeRj5Q+LsCX5o3slfxA2sNGGj6Bd0TljGKLTGFxAINjr4oJM0O5z39uydTf3D26iWoFzEzjjnFi3kIFUw9VTHQwBevFjZzd6qbyHSL0qJkaLUvLVIJqQyvH1yTdE+Jtx065PpL9mJXHuH+aoiYd0rTcQl8Im7HbHA9U1rtmwT9io8SLatdgb5yLJf53NW5u7vk9GvX4mav7ZWWaIHLdOgT1bYm145skzxPSIBAEO21GItbU8AW0e/cSoHVIxXj5ml7+YAAdKF8zol3KxR9Y3APWk0X/O759Xwp2z/v9a8gfCaK6aIFJJ6gVcqiKebMfA/rgc52DqDOwanBkcOQIikG8D97ujRNBii3h0qxCtBQ+Z7rCTG2LkeLSfi7pRkE275dPycGoYrMUh80+f4486/m1Zo9aezFjwHijvqYqp7ne9zc1lHKFs2E5wydAvHZCPNTlwcXTfN7jK1fCikEzVMBQJS0cEsGD7xaHmn8AYyhxUmXlakG4inH2rt92LTAcAtudq87m328zw/jAx6Wy7+1Z/L4iQjXIAr3eefaOe7iob5+Fqg7eb8wEvRimuTogBdolLw0KeXxdN2Sb+BGMJ9Tl2iT9zNdXCbvLgXFSTrTlxSyXK8wcMtAbFud5264q/+DZmd1DEv//kvsT5Rr9yUecjEuKm5mW21BwetgMktTw3FNgIl2TAln3xto8pHFQ1GnC6DK06fplvyv/Cm4POu0vKYrkas4loh6OvDsgtSA3vQvgnL46f nCDPedpy knu/pf+QDjGE0HKJco8I0gUH3lr1esYQ/HpiosbXdsEeKOYuRUlrdb0MuY9clZNLyDjNiEKr/f7fxgqnfa+Ey/WsHKPmzmR6XzsMiadLDe6kamI0Nvd2XbtI+mMjMlpihTNlm+HOnxHVIN/jvRME8WdAuMGXweFMC7cI1745+9RGCEbhjBoB3E7Aofi2j+4f5dZAJaifIfQpqKQSWhRF98Xl2dCNf4CdqUaZjPbdshgCWqzFspEJfEnJ0gbDp1BG0+thrxvLYzRVSmJDZ5X/HoMtTvoORhV0Inln4JGZ6WvXeA6RRQhqHMOUKJY27wwqKQiTZGB+mPmKKsLY= 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: List-Subscribe: List-Unsubscribe: On Tue, Mar 12, 2024 at 8:56=E2=80=AFAM Yosry Ahmed = wrote: > > LAM can only be enabled when a process is single-threaded. But _kernel_ > threads can temporarily use a single-threaded process's mm. > > If LAM is enabled by a userspace process while a kthread is using its > mm, the kthread will not observe LAM enablement (i.e. LAM will be > disabled in CR3). This could be fine for the kthread itself, as LAM only > affects userspace addresses. However, if the kthread context switches to > a thread in the same userspace process, CR3 may or may not be updated > because the mm_struct doesn't change (based on pending TLB flushes). If > CR3 is not updated, the userspace thread will run incorrectly with LAM > disabled, which may cause page faults when using tagged addresses. > Example scenario: > > CPU 1 CPU 2 > /* kthread */ > kthread_use_mm() > /* user thread */ > prctl_enable_tagged_addr() > /* LAM enabled on CPU 2 */ > /* LAM disabled on CPU 1 */ > context_switch() /* to CPU 1 */ > /* Switching to user thread */ > switch_mm_irqs_off() > /* CR3 not updated */ > /* LAM is still disabled on CPU 1 */ > > Synchronize LAM enablement by sending an IPI from > prctl_enable_tagged_addr() to all CPUs running with the mm_struct to > enable LAM. This makes sure LAM is enabled on CPU 1 in the above > scenario before prctl_enable_tagged_addr() returns and userspace starts > using tagged addresses, and before it's possible to run the userspace > process on CPU 1. > > In switch_mm_irqs_off(), move reading the LAM mask until after > mm_cpumask() is updated. This ensures that if an outdated LAM mask is > written to CR3, an IPI is received to update it right after IRQs are > re-enabled. > > Fixes: 82721d8b25d7 ("x86/mm: Handle LAM on context switch") > Suggested-by: Andy Lutomirski > Signed-off-by: Yosry Ahmed > Reviewed-by: Kirill A. Shutemov There hasn't been any further review comments on v2, and the merge window has been closed for a while now. Do I need to take any further action or send a new version of this series?