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 4F5CFC02182 for ; Wed, 22 Jan 2025 01:04:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 913966B0082; Tue, 21 Jan 2025 20:04:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8C3C46B0083; Tue, 21 Jan 2025 20:04:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 765366B0085; Tue, 21 Jan 2025 20:04:09 -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 59FAD6B0082 for ; Tue, 21 Jan 2025 20:04:09 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id EAA0A1411DF for ; Wed, 22 Jan 2025 01:04:08 +0000 (UTC) X-FDA: 83033291376.14.2AD47C5 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) by imf18.hostedemail.com (Postfix) with ESMTP id 0FC0E1C0011 for ; Wed, 22 Jan 2025 01:04:06 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="MOO/DTmt"; spf=pass (imf18.hostedemail.com: domain of 3BUSQZwYKCBIAws51uy66y3w.u64305CF-442Dsu2.69y@flex--seanjc.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3BUSQZwYKCBIAws51uy66y3w.u64305CF-442Dsu2.69y@flex--seanjc.bounces.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=1737507847; 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=HGAInSW7+q0vU97QD0HUaaeZu0zheatXMugXZrnQnto=; b=IqRBJB7U5c7ssmyvJfj995B/+pYBwotOjExSe3apGGPNFfsxITauIlhXWyH0zj1bgcl6ES gGXMsPJDdTxPIB37jJOEatEhBZKuiBBSbkrOuTPk3GrHIR+c+sUDcsbZeomz2WFdEqS1PX Km0fhXXmutGEA0T8SVqdLSKrswDoVwM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1737507847; a=rsa-sha256; cv=none; b=MHQr8XOb9HrpKi08DVe2Sr/DkWx/TLKBKYAuklRWGqTZdRTMaJGOWlmSxN2PTuZrV2WY5A zb4LT1SmquiH0A7LIEnMbWDKdKtdSS+4e1D4axF0nUBunlxLcSYl3w90ChgW+DKyvPEZJy Kjop31vxnkCjKlQY8Cw5/S3HA+JQI4Q= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="MOO/DTmt"; spf=pass (imf18.hostedemail.com: domain of 3BUSQZwYKCBIAws51uy66y3w.u64305CF-442Dsu2.69y@flex--seanjc.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3BUSQZwYKCBIAws51uy66y3w.u64305CF-442Dsu2.69y@flex--seanjc.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-2166a1a5cc4so114491295ad.3 for ; Tue, 21 Jan 2025 17:04:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1737507846; x=1738112646; darn=kvack.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=HGAInSW7+q0vU97QD0HUaaeZu0zheatXMugXZrnQnto=; b=MOO/DTmtr3sL6V1YIvGmXbV0+mKBO1fP3soEDm8qKk9d2jtC+Yqm33Irv0w5RgUn9W EUuwbNGTD6C4Bf99J7aYPAcnFHA0mT/bCc4hVquijgwe7h6UJe3mBz6Stem5BjHEpdAg PAyXr1ReoDcp+GGHT2qo6lDgA8GlDAhVoQNnhHz2e6I1UfFRI9H/+0CeSjfGD1ND9EqB bU78gsdsrRgIO2154XOTwARY86OO7qNQSO2sz0fP7irPlfqeU/2VsJVwnfx8jQRjHmNz ESMjQX2vtndV/lljVQdeh9TVP4WEiVMygchrmlg/+F0Y78IhpoB/ss6Xl/MIENsVHk+Y canA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737507846; x=1738112646; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=HGAInSW7+q0vU97QD0HUaaeZu0zheatXMugXZrnQnto=; b=R9XF8NZTx/TsQI4qFtQI/riiMJ90lqh3QwfoPjwYljjSvL+TeLVOUN8rvYsZm8k/JO OPxmXfph3IEBowStgsqqdtQXJ86aAfSw7fVOdzFTsErwkkpLN9ajsE5BvDi4+mr6wXGh lvVxy2EEkuNmgrgXcNGf2mSdVYvLA76itH1TibyqAqJxU4EblKKMF4dagE0wEN81VqAD Yt2nt3+TKB3nUFjFARGFcck0Y1jchJ6znzoEw09blFWl7sSoZUnLgbxXHOl7fh58iue3 OWeNuKFU9yn4FzKD4lYcm57ZNnIA42wHS5ePCh1mDD6/zsdlDDj63wYWcKGDi9M34EGe 6Y/g== X-Forwarded-Encrypted: i=1; AJvYcCU/oKuDMBYTG47jmIqzB7cQzCbqSn49F3FMOeZQCOhst3++Rx3V4QRvPXoT6XOGTlMcy1MigzpCaw==@kvack.org X-Gm-Message-State: AOJu0Yx5HvvPx/RLuCdnBYdv6UUI/ZKjD8Z5zKLFLXsvO9cFEVoxRZWs lDdi4JbJir8BPhmLyv5wYhTnp8iC6diKlErjf0EA28pTpMCBt/2hQzIBn+x14z19EkPqcjyC6wi q+g== X-Google-Smtp-Source: AGHT+IH6F+XmsAOl9kzgOVOxBLRRXT62oJJbonrrKhR+qzEndDJ3UWVtcgPMx5PJJKXl4IX7nvimBDDp9aQ= X-Received: from pfau14.prod.google.com ([2002:a05:6a00:aa8e:b0:72d:b2a2:bed7]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:6088:b0:72a:a9b5:ed91 with SMTP id d2e1a72fcca58-72daf99ed03mr26365241b3a.13.1737507845610; Tue, 21 Jan 2025 17:04:05 -0800 (PST) Date: Tue, 21 Jan 2025 17:04:04 -0800 In-Reply-To: Mime-Version: 1.0 References: <20250114175143.81438-1-vschneid@redhat.com> <20250114175143.81438-23-vschneid@redhat.com> Message-ID: Subject: Re: [PATCH v4 22/30] context_tracking: Exit CT_STATE_IDLE upon irq/nmi entry From: Sean Christopherson To: Frederic Weisbecker Cc: Valentin Schneider , linux-kernel@vger.kernel.org, x86@kernel.org, virtualization@lists.linux.dev, linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, linux-perf-users@vger.kernel.org, xen-devel@lists.xenproject.org, kvm@vger.kernel.org, linux-arch@vger.kernel.org, rcu@vger.kernel.org, linux-hardening@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, bpf@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, Juergen Gross , Ajay Kaher , Alexey Makhalov , Russell King , Catalin Marinas , Will Deacon , Huacai Chen , WANG Xuerui , Paul Walmsley , Palmer Dabbelt , Albert Ou , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Peter Zijlstra , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , Boris Ostrovsky , Josh Poimboeuf , Pawan Gupta , Paolo Bonzini , Andy Lutomirski , Arnd Bergmann , "Paul E. McKenney" , Jason Baron , Steven Rostedt , Ard Biesheuvel , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Juri Lelli , Clark Williams , Yair Podemsky , Tomas Glozar , Vincent Guittot , Dietmar Eggemann , Ben Segall , Mel Gorman , Kees Cook , Andrew Morton , Christoph Hellwig , Shuah Khan , Sami Tolvanen , Miguel Ojeda , Alice Ryhl , "Mike Rapoport (Microsoft)" , Samuel Holland , Rong Xu , Nicolas Saenz Julienne , Geert Uytterhoeven , Yosry Ahmed , "Kirill A. Shutemov" , "Masami Hiramatsu (Google)" , Jinghao Jia , Luis Chamberlain , Randy Dunlap , Tiezhu Yang Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: bwxqcjcp6fg91wkb88pjfwjm5sbkbprx X-Rspam-User: X-Rspamd-Queue-Id: 0FC0E1C0011 X-Rspamd-Server: rspam03 X-HE-Tag: 1737507846-454955 X-HE-Meta: U2FsdGVkX1/R/wkk80E57CZ9glpB/e/t9Dah1EaP7LqHtA83Tr+e3ugcuPkE5cE+4tEkIPmowin11szoGd8LyjJNCnc9jqJZ3whaQ20jtOV8elQo90qMomBALKczM6a61WZ+vy0Y4EpGMGx3qpsmrjA8VbhvBWXX4WOROahhizy7px/ur/1yq5MxWD6HLZF+fBmI2D8loXu5HTVsgf1aRPV5uBZyHEs2t7Xu8qZx/AgxGUnS2fQSSms5VOhCfMStSR1q+AGe6RY0NRsEXRgVVkx3RTa+zuNEb9c3sbTWgFWA1KiK/Ftre6E2SsDYNt4VwI+ToGBigGj5zPvqbiAdEeFeGM4pv3yPv9rOfBeV/TsBfVNgz21QkZ65Voak2dofiFCuJBE7edI1v8Ad12TotJwnOPlP22+wX5URX7r5SIh/5lW6kvLLIPp8vtwNnpMyRLdfUuoi2aqrofqilYtfL/KwY4spZFZDW4Xa4LHaSrweEx5CMr2Z7Dj4ejV18dVvMCRiXYKi7EzAl52Qs/dMsK/f2EFQdalnnWyiZhf+dnt2YSGcqqCYmt7xePfn5TAzGI3E2EB1IxvsG1CmTNDVDqwQ/J2Er+L11mDti2ZhG7efqVQ1LRilbLhi84t+tRV3xj1tKfQqla2O6k9mOyd9ocOsgWHrdOtH5+LX7xWsZgvL7K1cdgQFl9NRTVGAUiGu8azHcOs+rqEIvvhSczPVlQ03kGkoJdPepXptOQItlOT1hJyWlk82IiG+UELHDgX0uoiKdnhhbNamIbAqgJK47mba0mt4DZJ2DTyFEbweLpSfBEMoUbAaItsO7wnujPzz/bP0vTHuc2kffPCRJqw7PqCWSPqr6w+/u8Ex5HPqXDDSsOLeo/onAFJzo9UGdWkPYNxw5oRgJCxa4cGfPws1poYFHRgghRs6NyRWMnkJV9bHWZq2uTQeYdr9Tn65xe1H3QeZkmv96vEwDSihMBU 3aIEwVXr bKqM2HwBrih/pzBrBGQiSxfr007jvE7MThP6DiVxsugJSyobXJEcpeUKMxy/eWGTAnjx9NXLo0JOXAEfxUyXOfAIbLV/ivDqUfF/DPfCtpKe37KsIWaYVxqzsrWdtshWqee/cmRVVrxzXwUhE+h7c2QH5vqgARhpSedE5VNmNe1WjyeG1L+H90Mg6LZgBh1cNRZOh2It5UQp4vh09pOnMyl8dNgdXcHiUzZwYan78dWtznojBZMqbhDwWlTD8++kBtlcSAhhgfJ7Ho1ypdyy16A7hUYvLQLkaN1C+WlZoKa5rVwgV8wWno476PT4ANUaN1pitL5gQZz4nutR4UVyY/rJcg8KaOYiCClI511ZqfotRH7zMVMGQpwRimcTpftn882Uyjmv0GBChk5KKypurRl5Y3PltJCxBWBOxCnU3gRiSfFZIBJEJabX76KX1yNU8dEY01oani86NpfZQngajecwKkHxi57eMpnrNJZoVV+YVz1Pos6S6bNIBjAcT2qY6JwkJw9AVLAMSrS6rHJmKW/D/dlXHzfPpklyBe1/ArMg28CQ0HVWNMqjSjaykUbu/P7CSgYfK77BrtA7Mqq6WnZscsi9x4eXed6IaE13rZxtmQ015XItR+aOWXY4xprshRiLI36MNceKPqY3UhWMorAguqwH2Rr6R16yO5COGTB/BH5T4NVrcBvKht6gXQUXys8b2Yak6bLLg3HE= 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 Wed, Jan 22, 2025, Frederic Weisbecker wrote: > Le Tue, Jan 14, 2025 at 06:51:35PM +0100, Valentin Schneider a =C3=A9crit= : > > ct_nmi_{enter, exit}() only touches the RCU watching counter and doesn'= t > > modify the actual CT state part context_tracking.state. This means that > > upon receiving an IRQ when idle, the CT_STATE_IDLE->CT_STATE_KERNEL > > transition only happens in ct_idle_exit(). > >=20 > > One can note that ct_nmi_enter() can only ever be entered with the CT s= tate > > as either CT_STATE_KERNEL or CT_STATE_IDLE, as an IRQ/NMI happenning in= the > > CT_STATE_USER or CT_STATE_GUEST states will be routed down to ct_user_e= xit(). >=20 > Are you sure? An NMI can fire between guest_state_enter_irqoff() and > __svm_vcpu_run(). Heh, technically, they can't. On SVM, KVM clears GIF prior to svm_vcpu_ent= er_exit(), and restores GIF=3D1 only after it returns. I.e. NMIs are fully blocked _o= n SVM_. VMX unfortunately doesn't provide GIF, and so NMIs can arrive at any time. = It's infeasible for software to prevent them, so we're stuck with that. [In the= ory, KVM could deliberately generate an NMI and not do IRET so that NMIs are blo= cked, but that would be beyond crazy]. > And NMIs interrupting userspace don't call enter_from_user_mode(). In fac= t > they don't call irqentry_enter_from_user_mode() like regular IRQs but > irqentry_nmi_enter() instead. Well that's for archs implementing common e= ntry > code, I can't speak for the others. >=20 > Unifying the behaviour between user and idle such that the IRQs/NMIs exit= the > CT_STATE can be interesting but I fear this may not come for free. You wo= uld > need to save the old state on IRQ/NMI entry and restore it on exit. >=20 > Do we really need it? >=20 > Thanks.