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 962CDC02198 for ; Wed, 12 Feb 2025 13:29:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CB6686B0082; Wed, 12 Feb 2025 08:29:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C66A76B0083; Wed, 12 Feb 2025 08:29:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B2F0A6B0085; Wed, 12 Feb 2025 08:29:07 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 9BE156B0082 for ; Wed, 12 Feb 2025 08:29:07 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id B99331C9AA3 for ; Wed, 12 Feb 2025 13:29:03 +0000 (UTC) X-FDA: 83111373366.24.524D302 Received: from mail-qt1-f180.google.com (mail-qt1-f180.google.com [209.85.160.180]) by imf14.hostedemail.com (Postfix) with ESMTP id D3044100004 for ; Wed, 12 Feb 2025 13:29:01 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=QovSnYCV; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf14.hostedemail.com: domain of jackmanb@google.com designates 209.85.160.180 as permitted sender) smtp.mailfrom=jackmanb@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739366941; a=rsa-sha256; cv=none; b=jmQKjJm7DHKQ0Nx+cRO99Zajv3uEiwso9wcqYuALu0Y8BN4YjZc1lgIJTmgLco8C0Tnvmm v86ENZZVDdTZZNj2aua7ic5eYM/8qRNx9yclGoINbEqzutxExF4/beqffThoHOrI2lBuvP JNMt+BrSiC+YSdsEqLD17s4svYgRm1w= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=QovSnYCV; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf14.hostedemail.com: domain of jackmanb@google.com designates 209.85.160.180 as permitted sender) smtp.mailfrom=jackmanb@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739366941; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=1oevKEhZpdcUgIPsqB5jXWn7er2+P5SxSWdzJyUQCGc=; b=vMWN0fMScViyuaFmstALM5533DHI4eChQXlyWFAoF3shwxuw120TRKCTlXydm+KzewtEOV AYNjrrFGNtc8/jsUaQlPJi4uFRIZL4dzYVLi5Anx+BG+Qj0l89nOU7aqirIYiKuLF/YRRN TUM9Fu+L87Pl1f1Si7O6jVfmjihEBuE= Received: by mail-qt1-f180.google.com with SMTP id d75a77b69052e-47190a013d4so202481cf.1 for ; Wed, 12 Feb 2025 05:29:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1739366941; x=1739971741; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1oevKEhZpdcUgIPsqB5jXWn7er2+P5SxSWdzJyUQCGc=; b=QovSnYCVcvW2lg8N6D/Pb0eVUi1THKoK7TSdX3hVWP6e9YNNJcqXDYt7RS2EZ9VTtE OL/fVUnHRgT/qYHZzz74GGJGhRxbbBvCYMn3EdKynO9dYa2ptZLOfijBLK1ml24HG6oh mylg0blKS2Bl2WWuukJxOtYYGrnQ78sWMzxcIZfOOQ9roch6o7t1P35Em3QTpN+h2H26 jUUJECxLZlJnHCPGgS73iyCKt4OtkFWfTTsNvb7M0NB+6l1dw7zBqs+gfHP+FuuEKiCf jcXMRFMzNjQdi9i1znzW5F10F26nSXOkokCWMphI/6w74sKoypqBy4ViRVAtQOHrzpfp cQOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739366941; x=1739971741; h=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=1oevKEhZpdcUgIPsqB5jXWn7er2+P5SxSWdzJyUQCGc=; b=pY4jqntnnfRXsXJ0D9Q9KbfwBKz5zT78F5pvydhJt454wT5B4pCJ9t9HH/MCQjnoWN twuIlXoj0ZaO5Ps2fLqdKebUzx5DQlV2GKPNWvpRgIWbbDETDuzT7XThhwdcbNPv7QCF pNqOnbPL2EU4+cPQeUJ++4sva4SIWmamI92zMP7Ke+BVQm1Somlj2pfWanerl45neSnZ fw1y6MjWKYZTXgRFMiQp0bMnP6XCN+qNzgyDRz3kuVE+WHI3goL8sP9p6dAsmlClOoTO R8EJcQvgD2sa4B167DN1+VhToIvQJ7EPDEMVBXOw3zEaZ6jrcrBdQtdYEhvG7ruRsCGS gA1Q== X-Forwarded-Encrypted: i=1; AJvYcCWJRAQDcqhu9mEwCG9cvpeLvfpCLVXnLeeHXi8ArEPZnpMG2/RGPFXy0uRyhSt5V0TREIpkHaBspA==@kvack.org X-Gm-Message-State: AOJu0YxYRtYhhps+wntC/cvB5/v2FfzCpeTyTVSGwiV224QguPK3kIjb vDZN3PtlTGev/TPVWBiq9XM8/zPWEQ+Nnen4iInHNRPddn5IO7PHbvO18SoC1ANBMXsr3ZmPg8j kB8wTHFKV93iTT28+ySQw9pJnXIBlRCN7isoA X-Gm-Gg: ASbGnct1Z6o3076am1YvCu66ENB+eWNZaiExB3Gvmox4ed81GiciYx4p0CEa6+7GLJU 3tg9x3gYkzz4j5s8aDorruls5vEzr1AMuSSL7Y6oZb0OzQEqtvJ6vuHNfcc+sLTY7d3RJwq+SrL T5tOaML1tSGU92OuyNX3dr56Mw0V0= X-Google-Smtp-Source: AGHT+IFY7L/Myi794B1SK+3UlK21ZXz5RBVCl3KeIJna5/SZL0sEYBOmA5JkjmD5IfT9EtGDO2KAnqAmYbqEqpdLGX0= X-Received: by 2002:a05:622a:606:b0:46d:f29d:4173 with SMTP id d75a77b69052e-471b0211422mr3517011cf.16.1739366940740; Wed, 12 Feb 2025 05:29:00 -0800 (PST) MIME-Version: 1.0 References: <20250211210823.242681-1-riel@surriel.com> <20250211210823.242681-10-riel@surriel.com> In-Reply-To: <20250211210823.242681-10-riel@surriel.com> From: Brendan Jackman Date: Wed, 12 Feb 2025 14:28:49 +0100 X-Gm-Features: AWEUYZn7d4B4bRC0FiC6VGjDHlL6JQqFPYLv5MVNharb2RHtWqjjfMY6zCfQF3A Message-ID: Subject: Re: [PATCH v10 09/12] x86/mm: enable broadcast TLB invalidation for multi-threaded processes To: Rik van Riel Cc: x86@kernel.org, linux-kernel@vger.kernel.org, bp@alien8.de, peterz@infradead.org, dave.hansen@linux.intel.com, zhengqi.arch@bytedance.com, nadav.amit@gmail.com, thomas.lendacky@amd.com, kernel-team@meta.com, linux-mm@kvack.org, akpm@linux-foundation.org, jannh@google.com, mhklinux@outlook.com, andrew.cooper3@citrix.com, Manali Shukla Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: D3044100004 X-Stat-Signature: zfwcupwkxkobf4is64m854cpe9k7xtez X-Rspam-User: X-HE-Tag: 1739366941-59005 X-HE-Meta: U2FsdGVkX1974i3bDrfNvEfBoVBPLGmrt6A0GvXsw1EGd2AetA1Ha1gZ1VD1HIbDr36rlkqCEHc6m0FGJKbCtc7EpDy15ieuy5jPt0kLk0kQ7BfNHuVbAOKKLALaatj3y/Rxp9zIBpAWDHRVXLHy8te7mCgtYnand41HJcd3VWfypwHxTwVDRkW5Nv73wUPZD0Spj321R/XRHDtegIuABBYaIDJC5CNTq4FSImOsIkLjfn+WECfAL6NvxrYiqkbyNMz41uTkI/y2SX0iosbBJj3cEAZMAN3ru6EKdSF2Qy8PdHMgzv6wIEwOzwjD5Cu3blVkQjp59uAS5rRsVfGeQXFkD31QshpFsdtCXECXiYYi7AY6qRO5nYg9UFJ5He3FbnhmFCZ6682yLy9Uo6HE86Y+muKuE6XXWUFlpn98ag28sXZbq+gTOmN1RWmCLCJXXZbnntVLh5dmSc6tAs0Zzw9vfdBooqXxmUGnkmvZnaaeOjQ6V8VjLEaH/fVlSoWgx9pm12iCOjk7zMWBoy5ZVu/ecJ46+PlahUkQJK8O1w9LIcMn7Gzvlj4VtfIkzYCXWTidysALkHWujNw4wfx3GzRGnumPS55fCY/DGnef6NTG7C+Yy8MpQZg706e5I8T9Nd5y7iFpyLFN5KxXMqrvIVFyRehOE0vBMurpuNcjllfPPEpSOqaNGAO+XACuvfs8onzhCZvdLnZzBXXmPL9tRFuQ17/owemgzSqSoglfvav5rOcLV81JiVwuWppEU1ZheUScEM9EADtAa04GPRDnA1Zx7TrbejsEkcs7LobwsVxrl7aBkq99M5Ordg7l2drjR58oJ4EnnXDjg3ey5XRkO9DY3CocumZZPykVwHARBYjcImYV+uhvGCu/JfVsszZCuxoP0Cnctnf81N2Nej2ltdYo9ii0rd1OAEAn11Obh34MCk5lg0usN2qqMHm+4fzpDhLigmp7iViyVQ7PNEs Wq9FgTSp wz+AE7m2x3LFEmAEkNrL8Xat4PkVyxCESSTlbU4UCT3PLnTaYh9rS6/R4aywkBeg/eLUUnPneypYhxcBx/09P9jH3mdL3yF3osw2DnlkI9WhzCY9nUMZ0o+J3IP2Y9EtrXGTi+lFU+ORnHiyiarYO2QHOT0u91KnnBO40o31gIDaIxm9RGqSz1hiKcqb4pNi4aMpMRpypGdsZjcTZ+02zMda5AVonGgkvVhHCQUEdPZQfkmuTHGB9JwPpN4aCRFeUgYnvi2D+/QiwjjijCSP+PUgoiJXgO+8wbe3Ieun0GBiY1AiMl5Y5/bCQRIrwSgUh159XuJIEteowJNQ= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000028, 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, 11 Feb 2025 at 22:09, Rik van Riel wrote: > + /* Transition from global->local ASID does not currently happen. */ > + if (!global_asid && is_global_asid(prev_asid)) > + return true; What about a WARN_ON_ONCE? Then the code contains evidence that the comment is true. IIUC this isn't just a "not implemented feature", rather there is plenty of other code that would need to be updated to make it safe. > +static void use_global_asid(struct mm_struct *mm) > +{ > + u16 asid; > + > + guard(raw_spinlock_irqsave)(&global_asid_lock); > + > + /* This process is already using broadcast TLB invalidation. */ > + if (READ_ONCE(mm->context.global_asid)) > + return; > + > + /* The last global ASID was consumed while waiting for the lock. */ > + if (!READ_ONCE(global_asid_available)) { I think the READ_ONCE is unnecessary while we have the spinlock, it's fine if this read gets split or whatever? Ditto for mm->context.global_asid, it's only modified with the lock held.