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 0CD5CD75E5A for ; Fri, 22 Nov 2024 14:57:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 75B196B00B8; Fri, 22 Nov 2024 09:57:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6E3E66B00B9; Fri, 22 Nov 2024 09:57:15 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 536D16B00BA; Fri, 22 Nov 2024 09:57:15 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 2E9156B00B8 for ; Fri, 22 Nov 2024 09:57:15 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 955A91C7FE7 for ; Fri, 22 Nov 2024 14:57:14 +0000 (UTC) X-FDA: 82814031216.03.33F87FC Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf20.hostedemail.com (Postfix) with ESMTP id 94D6F1C0004 for ; Fri, 22 Nov 2024 14:56:04 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=ORq6jXkW; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf20.hostedemail.com: domain of vschneid@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=vschneid@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732287364; a=rsa-sha256; cv=none; b=w2ZYBetH06QNScUnUIHlmkxaZ1HIg5CON+PIDMQRCDTBb4paO2RuXXEO+FvcmjXauD5S43 1NJzXi6KQzOXx5xuEGpmXaa527vUe7GJAwDEP78swdZenU0mgHIIeaigMqkmFzliazvr4U nYBppQX7CN00kFjSgLvFGKWhgaUqAeQ= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=ORq6jXkW; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf20.hostedemail.com: domain of vschneid@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=vschneid@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732287364; 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=6szJ5m1iZAmB2h1a+a0b5SzEN2kL+kNRYVuQiH1ySFE=; b=UaUfxyHaOr0yDTDb5Dt//d3N4E67jn1pmpf5cx9itIW+eo48CSYelT7Pl9vYZxo96JASf1 BGbxs9uoWCxZ+79ZIo3txM524B9bm/DDyZxoHJPNHXEiAi2Ht029Hd/EilTtfK1lscGEGv /EFXJRskIVK4/nMxjIc2qx/lTgwKej4= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1732287431; 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=6szJ5m1iZAmB2h1a+a0b5SzEN2kL+kNRYVuQiH1ySFE=; b=ORq6jXkWkVmhvql4pd4FzdSYQNl0M9NlmE6qFuUZ81XkUKh1IY0zh/L5w+IOYYaKy5GH6B mgG1zB99hECBF4J4FZobK8L1McrrBuTT3hzgxkkEKnp+XoxBkptx/001mVCz920NfF46zP 7yNC4CtOxKp1vmoxaKJzbzkT/pCJoTE= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-503-Y8vIUHXCPjifTonfljRd8g-1; Fri, 22 Nov 2024 09:57:10 -0500 X-MC-Unique: Y8vIUHXCPjifTonfljRd8g-1 X-Mimecast-MFC-AGG-ID: Y8vIUHXCPjifTonfljRd8g Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-7b15d3cd6dcso282815685a.0 for ; Fri, 22 Nov 2024 06:57:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732287429; x=1732892229; 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=Sptth2+J7xYYlvrpOuYTMVo9n+vm/HkHIiB9PfWHJ6k=; b=sNZ3C8GdwpKW6Ide4m/W6nk6WTTY7Uv0YP3s0qCp1CLLL2RPVifanSHnh6K07ogASS EvL+LkIogtR579rjVeS5xOljQn6OWum/1Q1M/oLV2340boJhASinQD0aT3ky4wqfCN/V nyVB0bDiAt+IbEs2YMyoZThB2umW5lqOka40vF+FqogWWkLPWXXDaSynlZmjdai8Vgby JBLNQXVIL6XZ1MuBDHsI32XSkZnF8lpF0P/wSMG2yzyAW2nIai1I4uj//r1+/8m781uW VVyz/cfyRrr7wh9tqb0PuWx3f5NtBSshImOahGlstGntVFa3w2wlVXOy9G2TFwy631ZL nTxg== X-Forwarded-Encrypted: i=1; AJvYcCVfDeXKEmOGugmL4eGht7PqGfg/kUq+D9bSeN+iAPAy4CRXjKC696Qm15TR2zY/1ZVtB1Ze0NUFsA==@kvack.org X-Gm-Message-State: AOJu0YwXRoCH6fOKd4pS5gs7EQfy0pdKWnV2bXE76hxRMaG3FmJ+661T sTItzqQtwyu893OPfVAoX0Fpf9eK3+GyaiGm8fERLcCF6X8nhNA6Gp3QcGSmWb5TZ06wS1McIet xErgjBXhY/oiU/kwHtSH1GStHWIs3q0+5FaNJjV17/JgRw7ZV X-Gm-Gg: ASbGnct+RjY5knJHAUW2x4yacxzPSQFhBs/RJu7mW57mMz6V64VuDQvXSsuC4FMvq+d rTfp2PO4aSua/rpLGP2wLLev6HrNhYOGlsufQPV+u6HfUuAcUgH+x3j2Z2qetRnRgtLkwsYkyC3 g6QzO/gLSIIWNL9VmkT6LLgnxGA/6yS+k+Oc5vpbn7nV6prtm0gJ9wP/FXfDNE/pgAYz9ir//Ki aA198R1/Sva13CS0tMZL5PIn4lxmN2RFMt36a9E+3PLmF5kmCuW+ovvDrqteOkpnEdBHsfDhD17 IHKnsPrOg/pMjgTsbaYvaWwe6hn/4J/ALmc= X-Received: by 2002:a05:620a:4551:b0:7b1:522a:b05 with SMTP id af79cd13be357-7b514488166mr373606085a.7.1732287429645; Fri, 22 Nov 2024 06:57:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IHo66xOB/q1z1C9fiLdA8QOFwiL4+kiR9reyJMdimFadi7v3LEk57578pB7zv1XQEy4GyU/yA== X-Received: by 2002:a05:620a:4551:b0:7b1:522a:b05 with SMTP id af79cd13be357-7b514488166mr373597785a.7.1732287429065; Fri, 22 Nov 2024 06:57:09 -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 af79cd13be357-7b513faf57dsm93769985a.48.2024.11.22.06.57.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Nov 2024 06:57:08 -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, 22 Nov 2024 15:56:59 +0100 Message-ID: MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: QL2gJuebR6k_hDYWlVbgTnQ9eI5fZNNKijKuMQJASIU_1732287429 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 94D6F1C0004 X-Rspamd-Server: rspam11 X-Stat-Signature: mjibpnosz9eyb7sx1crxhz35517hqiku X-HE-Tag: 1732287364-476262 X-HE-Meta: U2FsdGVkX182aLzPPIM2P7053sSd+/uYRfw0u+77Tc/6xuxEuwOs7knvtr/RZ8ULQmiYve2FFmIBQQ8JTMt/uzJbc2ouZqkb/XTC53h+Kpf8+8vsj3x6uzJthMkEornR9gMlTRoTwfroaHmEACUkNxwcZPrH7A2O65HzP9g/8wqlmrUZ0sO7sgrPIw0KIEofalSaBHN7uepN41nZg6gD1e01r89e0mqqDvGLC4t2UAyx3Qzv3ubPFaXPF2FEDitmMWQqtpQrKOuEBqacpO+SxGRd1OagS1HPCM8J2Pk5oQTXHvOEmVVD0LFNBkgGC+Lw2CPaW6zEFu/5SzLb0Z44vuxgmN/bcG4mCRxvUa/MbDKV6XIVZfQnLvo/pZD6rdCu2WG0DfdVz+h1oS24/iBqQkjCTiOQKpT8ThXROMwQR2HwIDEKTfJ3yRCYDaGxLfAeXwR1VzdBkJy2ZnG8z5iEEByUUdY1YGxsJ4jY/pBJPJiSC9tijqTGhViKTWHsd6qQ0s8dAO8TLMvR9WNsjY57JDundKA3OUIrufs7+0uDlYp+BY/YtcUhkbGFtOWjrp25eqUIUi4ojZGPoKtnInsRkWdL/faHhEMRDGuZPu2hFhgTjY1PEngcjUn4qP5lxGHHd5Tx9c34R4sU84pv7w3BYehw/cLz8TntQM8gz5bqhb05SMv4GBaQL016PP5sBs6aYxCi1Qz4YWMupVfyfeomNCFxfJpkNIC7SgDc1WUOwbsIBn518pAHRPjqk1swjHKWEXOqCADNEEqat2E6CJynCCE5e05VY1uvaODcAyCwdv3UXdtWC0yJPxFOMDbogHpvDqKXlKdu8qpRa3w4D0HZezovb+DbvUBURv7OgVlBl6K+LBsGNOE+/zrZIwXfyI6ZROCW2Mc/ZgyrzNvImoHesQR/4+JGyui13FauC7NBg4UJeYFDUoqHIrcnvrYkjXsMN5YzbXT3ynUEFUXOzkj i08MzdlA dtMGfaRC6lNtuqwPJ6GwkmqjWTWvOLz2DGD+H4X5dHUWtU3xQM440jiGGIIs7HmI2bHk5sq5uh6spQWwygck5C7ux9PjqQJQk0M6e3gQzLIzqR7DEroVEAgFoJLpxbZDCb5TjuS4i2gMHK+N8vFsyszFQUAghEc/o1IIUPG3yUghRrqhivibcWb1frG+TF4aD30osjF31R4xVzu7MWabWuCfrgJZzrnSzXr4z+DGH362dBpEn0g7PE4EGU8yWZ9QTQLoqHN+bdi0SCSLawOUGSWC0lu7VqpBwvFSdgBW5iqxcvenBZNB/ikydIuX0P8N+eDK7giUKrzWlmwoKlMfqdRBSCXFAeyHPCzOreWCGqYrVXsvz8sggoWn3wNtAxKEH/akISkr6aed+lMbWnJhBs7HifPdaqe7wJ23EQ3sF2pOauFw= 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 20/11/24 18:30, Frederic Weisbecker wrote: > Le Wed, Nov 20, 2024 at 06:10:43PM +0100, Valentin Schneider a =C3=A9crit= : >> On 20/11/24 15:23, Frederic Weisbecker wrote: >> >> > Ah but there is CT_STATE_GUEST and I see the last patch also applies t= hat 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, cpu)= ; >> > 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 check, >> 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 terrible. > > The thing is, what you read with atomic_read() should be close to reality= . > If it already is !=3D CT_STATE_KERNEL then you're good (minus racy change= s). > If it is CT_STATE_KERNEL then you still must do a failing cmpxchg() in an= y case, > at least to make sure you didn't miss a context tracking change. So the b= est > you can do is a bet. > >> >> At the cost of one extra bit for the CT_STATE area, with CT_STATE_KERNEL= =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. > I'm thinking with: 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 */ we can stick with old &=3D ~CT_STATE_KERNEL; and that'll let the cmpxchg succeed for any of IDLE/USER/GUEST. > Thanks.