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 DBEB7D729E7 for ; Fri, 29 Nov 2024 16:40:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 65D596B0083; Fri, 29 Nov 2024 11:40:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5E6336B009B; Fri, 29 Nov 2024 11:40:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 438AC6B009D; Fri, 29 Nov 2024 11:40:47 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 227336B0083 for ; Fri, 29 Nov 2024 11:40:47 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id C7117C01A8 for ; Fri, 29 Nov 2024 16:40:46 +0000 (UTC) X-FDA: 82839696114.13.46FA96C Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf03.hostedemail.com (Postfix) with ESMTP id B58352000F for ; Fri, 29 Nov 2024 16:40:40 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=ggDsT+7u; spf=pass (imf03.hostedemail.com: domain of vschneid@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=vschneid@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732898440; 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=PSfEajnzktM1AKCYPpecCDZJkB6jAx/R0QhPsBOpyLE=; b=loL94YhiL2S0nOz5/9VjUt7dLBFSJa3kH5xfptEIHjNYpqu9MUGdd9nKF+TuC//a1vK2W3 NkSMq/L4EHvwCKe7dJMyqQ6FL2z4uJrhYgaHA2p9EJUo+34AeITSgKr6bfOU4bmAk5lCGb 29IDDWElGr1qBiK8/XC6Cak3EjQmBEc= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=ggDsT+7u; spf=pass (imf03.hostedemail.com: domain of vschneid@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=vschneid@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732898440; a=rsa-sha256; cv=none; b=JEHAzePN6q5nJYX23PaE5QXCZ+bnnsfXEXQFJ1+5QlhVvhibfbJxUQumO3Y5mteg9YcVMf 6y0kSq5IWtnFym8gSapRZLEwGcOnr8wjT7FVxFtRS2RjCstS8dcVrjOyH4PmIe+qlJH5qj N6Kw1gHzeMmCs4TFOd7dVloq1Uy0LNc= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1732898443; h=from:from: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; bh=PSfEajnzktM1AKCYPpecCDZJkB6jAx/R0QhPsBOpyLE=; b=ggDsT+7upNTGA81eScCw1GReMGABg/fKtcrEXTd5JNMsK3esrVwuMFMINder/iwrtPWGaL rBqWou0D6RfPXWUoIZw+7oGBSrlnLDCmO21ccpU8R4lSE6SZ4gv8tYNwRJ8ZLpl7CeN/Cn GPhHLjfTXUBG5FOXw5oxNfPrU2dEbmk= Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-625-AB5PYDCWMhCYAaUHHe0zzQ-1; Fri, 29 Nov 2024 11:40:42 -0500 X-MC-Unique: AB5PYDCWMhCYAaUHHe0zzQ-1 X-Mimecast-MFC-AGG-ID: AB5PYDCWMhCYAaUHHe0zzQ Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-6d884999693so11569746d6.0 for ; Fri, 29 Nov 2024 08:40:42 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732898442; x=1733503242; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2oxQ2EopQjYunks2eIxH2qb+BPEjEvokj+yvCZveiP0=; b=aRrNiurPtaFY6HLGzscVU47D7d+dQrTkTrjGlKykDwk26qFhZ1yomCqLZ4Okp+k3Z4 3uGmhMrGklWQmOV26m05hjCmDXVFWlhL0mZIBjccJ633Tty21YHFkJQTmjfj9ecAVlrM kDz23kyV0qXwOxHcPApuA6oLCyOY3WRv1jrUIFX37GOgfDl6rCe21vGvQEjNJ/xc+7XD sxaiJPDWQdBbJEljp3w1jU04GFQwgwSHaR/EvokbF/lSbcjeHjZah1w3C54YwiZpVWdJ 02ndWpf5qvgEo2ktaYyEPhR4jkyBxlR609AUzhMxwSH9PTupPz0BVYqjMWgiODIqnuCb 0Q2g== X-Forwarded-Encrypted: i=1; AJvYcCVmAleZL72k9GPv2N1TkqgspULSAQehDRGsuzs2jTGuBMJ+MDw/ZSoQ69LNC8UoCkYEaoQrPmHedw==@kvack.org X-Gm-Message-State: AOJu0YyYujLWK5j9+FHxWo3jxiUxrMOCq+3PRXFf7MvPBrBacDT6Ck0c /tXQa0Gb2jmYzjv2IT8mZctG2inovKlrqXPizfHiDXybcCaHdcYE/3D/v8lQnvajipHbQ07UJ3X 2kUKqxw2rlahMgHcG0pytBLMS9bUJMy3JsyJDdoZxIJ8E/HU+ X-Gm-Gg: ASbGncsmZkCGSnqwfpEUs6GHtRRktgvllkCOGU1VWwdPU4gAWwT90I1FJ0frQvRtahf jGVV3Zm/JZ6Ey5wx+sZ0pVLf7HtXApjvVgMc2qHFtmE4Eizjq2FMi/+lj33cn8aLEbgT/s6QClW Jwj3mY6nU2WOpndOPTX9a2ctWXTZPpYhMclpZmuIZoBsjIYz83Vzv/nX6ehZF1K73CmkCgTcsZ2 mp7jhygseaGNhCNoMJO+thDJWMnSzl6T4ptwbslHYToHsQZK6rmFoYo0jt11sVsQnMo4y8RW62+ nB2cDHVryon55w1sf9wr85bhd1i5TqOUVAA= X-Received: by 2002:a05:6214:c62:b0:6d4:1a99:427b with SMTP id 6a1803df08f44-6d864d8e4famr151983946d6.30.1732898442061; Fri, 29 Nov 2024 08:40:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IG9RcRtBRvnIDfzr2/iRL96o9fRk4J92A47PIoCtseLUfNoii93tfgZQ/3Nm/m06TGA/XDcKA== X-Received: by 2002:a05:6214:c62:b0:6d4:1a99:427b with SMTP id 6a1803df08f44-6d864d8e4famr151982836d6.30.1732898441562; Fri, 29 Nov 2024 08:40:41 -0800 (PST) Received: from vschneid-thinkpadt14sgen2i.remote.csb (213-44-141-166.abo.bbox.fr. [213.44.141.166]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6d8752064besm18111326d6.71.2024.11.29.08.40.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Nov 2024 08:40:40 -0800 (PST) From: Valentin Schneider To: Frederic Weisbecker Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kvm@vger.kernel.org, linux-mm@kvack.org, bpf@vger.kernel.org, x86@kernel.org, rcu@vger.kernel.org, linux-kselftest@vger.kernel.org, Nicolas Saenz Julienne , 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 , "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" , Nadav Amit , Dan Carpenter , Chuang Wang , Yang Jihong , Petr Mladek , "Jason A. Donenfeld" , Song Liu , Julian Pidancet , Tom Lendacky , Dionna Glaze , Thomas =?utf-8?Q?Wei=C3=9Fschuh?= , Juri Lelli , Marcelo Tosatti , Yair Podemsky , Daniel Wagner , Petr Tesarik Subject: Re: [RFC PATCH v3 11/15] context-tracking: Introduce work deferral infrastructure In-Reply-To: References: <20241119153502.41361-1-vschneid@redhat.com> <20241119153502.41361-12-vschneid@redhat.com> Date: Fri, 29 Nov 2024 17:40:29 +0100 Message-ID: MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: L5GAWcCSDVFNpSkz7cFrCxavEg1PO-IJUPtAqHlxDmg_1732898442 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: B58352000F X-Stat-Signature: iursyiwgy34s1rdfgm7jusyxgnfgjsht X-Rspam-User: X-Rspamd-Server: rspam11 X-HE-Tag: 1732898440-122284 X-HE-Meta: U2FsdGVkX197uJGbg0EpN3sC/YDVZb0Hyk5KoPqPZ5mS2Mt5w+PJ0KpFWEcM82kB8pDXoEjI+oTEIZ8jGkBTkDNRA+XQdC0MY7PZhiTXw+hFT54Kpvf+8sPa2Y8EI6UpatyowyIWfJSTumkOOC+EHoeZgkMAZCulzGPOC2tYJWhG1YkmTKKN64lRNavQrV3+6ZBCFf6JWOY+NjgH18x3Lil9xNKDnvITb8y/rk8Fr4gIlQgm3dTRsp5AiRVXOuekognevSByQa03Ybc77+dRGDxZLm1ZgE0Xr370blUcvG8Ock8R1Ge2J8sOYTDF72kG7joyllxIS1H8lnFf3c2GCuGP8liAkNSMq8m2zH25JB14eQwDFb74h/1knYwebr16gi7nfeYUIjsZTI860UzUgr77FOgwRIn21x718r1KiZASNOE1g1ZvSjM8fr7lwJUwcm14mu/5M1lVw5biwjcTGmu4YmzdKba5NKPjH/tnE3Zf+RsoYhoZkXI32+kNuOCPVvi/ER9T7+EIDplYnnTHEwyVqueRbq8anSA0ctaT4Ie5Wh9vj6CTM77/lc6eGsPnWIBYRutVqeoOSie38stlKO+QEj9O+xoy6HkvzXCSQgMSvzyB/Ysn0eKp8S0kW5nId9CZtTMkXwvD/DQ7GGTkMiIkAcf4tW8TRW7vgHn3GLDV7dvJhSRwtMIyEOH1h10cBzN4C2CFZIfnpD9Fi5xhDu/lEZ19/b30NV5eNJRFhCP3WizGZUCArlvaZA409GhiZ/qDE8TgIwXTWI2JC2AGouCwdvc6Tu/4gRxL1Cs1dHSfqknreR8BgA+kLy0+8dAoOSldgpbDengpLiNs//LzOD07AdIwgqtJEIY3/DlJ6J5rTlaIQx4lsL670L/sL2WgAV95sW9Omy7y8k+Z3b8+kTDEhWaVw1MxL4tsauroU07OvJS8P9iIy7DM4NZzDG0V5mSHeDMQgI+MtbPA8L1 wKWORr87 5Ii7ZgyJdio7NzS7CbuaN2G/VDsdeA7Skb8doiM3nlAXTZ9QIG62snQYyXM2LzAAsfJoubGHbZDVg7JANIcXpcC1VSE0KtaHso9umlYDxSB2prAqNZOTJcXh8gMrOGxOcPHQndb1Lb4/9L0DYF4CoZ2Nnk46CQBUDMI/B61lH3H7gJoEv4xdJA9SDvnISFCqAPXmKmOTYVlhzEJNq9tRaQzCvAl6D5d81tex2BJq9s2kXsYZpbavd4zpkJdQGgcvuuSo11aPQ5gh7rQLq8vdfAp5bVnDYpBL9A0Q2JvCJOXUfRDRf6zdBIDZ6my0+dU7N6IGMYpsRruAAhSKR7OJJjlPPAwtxGc/fOJt5Z6IQpQIrIasm0a4pmCeKjTYstGWomiZFUsVKLlXubPK+v1ZvUCUwofy2V9TmwDGw0HBmQz0tMes7ztFhAOpl+A== 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 24/11/24 22:46, Frederic Weisbecker wrote: > Le Fri, Nov 22, 2024 at 03:56:59PM +0100, Valentin Schneider a =C3=A9crit= : >> On 20/11/24 18:30, Frederic Weisbecker wrote: >> > Le Wed, Nov 20, 2024 at 06:10:43PM +0100, Valentin Schneider a =C3=A9c= rit : >> >> On 20/11/24 15:23, Frederic Weisbecker wrote: >> >> >> >> > Ah but there is CT_STATE_GUEST and I see the last patch also applie= s that to >> >> > CT_STATE_IDLE. >> >> > >> >> > So that could be: >> >> > >> >> > bool ct_set_cpu_work(unsigned int cpu, unsigned int work) >> >> > { >> >> > struct context_tracking *ct =3D per_cpu_ptr(&context_tracking, c= pu); >> >> > unsigned int old; >> >> > bool ret =3D false; >> >> > >> >> > preempt_disable(); >> >> > >> >> > old =3D atomic_read(&ct->state); >> >> > >> >> > /* CT_STATE_IDLE can be added to last patch here */ >> >> > if (!(old & (CT_STATE_USER | CT_STATE_GUEST))) { >> >> > old &=3D ~CT_STATE_MASK; >> >> > old |=3D CT_STATE_USER; >> >> > } >> >> >> >> Hmph, so that lets us leverage the cmpxchg for a !CT_STATE_KERNEL che= ck, >> >> but we get an extra loop if the target CPU exits kernelspace not to >> >> userspace (e.g. vcpu or idle) in the meantime - not great, not terrib= le. >> > >> > The thing is, what you read with atomic_read() should be close to real= ity. >> > If it already is !=3D CT_STATE_KERNEL then you're good (minus racy cha= nges). >> > If it is CT_STATE_KERNEL then you still must do a failing cmpxchg() in= any case, >> > at least to make sure you didn't miss a context tracking change. So th= e best >> > you can do is a bet. >> > >> >> >> >> At the cost of one extra bit for the CT_STATE area, with CT_STATE_KER= NEL=3D1 >> >> we could do: >> >> >> >> old =3D atomic_read(&ct->state); >> >> old &=3D ~CT_STATE_KERNEL; >> > >> > And perhaps also old |=3D CT_STATE_IDLE (I'm seeing the last patch now= ), >> > so you at least get a chance of making it right (only ~CT_STATE_KERNEL >> > will always fail) and CPUs usually spend most of their time idle. >> > >>=20 >> I'm thinking with: >>=20 >> CT_STATE_IDLE=09=09=3D 0, >> CT_STATE_USER=09=09=3D 1, >> CT_STATE_GUEST=09=09=3D 2, >> CT_STATE_KERNEL=09=09=3D 4, /* Keep that as a standalone bit */ > > Right! > >>=20 >> we can stick with old &=3D ~CT_STATE_KERNEL; and that'll let the cmpxchg >> succeed for any of IDLE/USER/GUEST. > > Sure but if (old & CT_STATE_KERNEL), cmpxchg() will consistently fail. > But you can make a bet that it has switched to CT_STATE_IDLE between > the atomic_read() and the first atomic_cmpxchg(). This way you still have > a tiny chance to succeed. > > That is: > > old =3D atomic_read(&ct->state); > if (old & CT_STATE_KERNEl) > old |=3D CT_STATE_IDLE; > old &=3D ~CT_STATE_KERNEL; > > > do { > atomic_try_cmpxchg(...) > > Hmm? But it could equally be CT_STATE_{USER, GUEST}, right? That is, if we have all of this enabled them we assume the isolated CPUs spend the least amount of time in the kernel, if they don't we get to blame the user.