From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 805772B9A4 for ; Wed, 22 Jan 2025 01:04:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737507848; cv=none; b=I+HBam6QMrgvbFIT/O2oDYf8KAZUMU1MombvIvciTi1W5yqkySx9NtAhQl5JedrsqhUm8tvp4iuO3XI0wyYCFO+GIy7TT2i4vER3pXv8tLdD4Y6d0ZFQdTB5HmgEzI8CDAXsFFGUDnqYRCpBnLEVazpfrxZG7KqLgltEVf2wSGI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737507848; c=relaxed/simple; bh=fBMEEQrP8cCyPVJBx+8XOjAmMFlhjYXlOqE8udqGu/8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=trxlSg+AMXByKvfp8GWgW1Vqy98ee7HjDUdg5d1uL/MQwTniaZhiMxpJVMK14kz0kFGkPUL7UKb0Gm0i2CctpoJDOxvA2YNe1inRFZsgdg42NLUPXEYBEAKYPkozUWPwrcvGd3xRPGrVIpOLWYtw8vV3KR1TVdUbA4E5Z7HXBaw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=JrmUZPrP; arc=none smtp.client-ip=209.85.214.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="JrmUZPrP" Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-2178115051dso117163745ad.1 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=1737507845; x=1738112645; darn=lists.linux.dev; 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=JrmUZPrPQ5m9Q1OT2RGCQggsB9293Bxo1Wp/dmt7gjftCkFbhMv3oLbRekfUR3CAGN Uzps4br/rezedI1zvSdVsGMtBtvAFfZpXmYQrB4zlKp85K6HgKRL0Hma0cQBeu8jNCKB ByRgUt4HmojcakTzKu0zvmtx5lNROVcveoOqoHIYqs+Hq+jmJfG/1BAHl3p7x0YT5LiY nif8z1Xq1l9xV4XW5yAjJUC8/24kRZNFerndbYUzF3t21AxRoRVY69zwFFTtj8Fkg/Ld aBqb8AS/ZmG4nZgwrrpvXXJTy1ghEe9krRUG0IP9UaiU9yGSDWerjI0S2MGK7fGhPAbS OAyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737507845; x=1738112645; 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=Ww/gFKFQRGqXi8+9IDBISnIvz0NAHKoQxTfXouFxo+51HAKe21lTwnNqcHYK4HPOqY J9w8Oo6/rwCuL4Wn/t/3DnmIlP2+ntNIJvrb4fBJx7sC2FE5w/AOh8lMB69Zh50uZPhm 3pLiqRwuaw6UJZNQsRi+3pecQVqdW7uRdhn1MJJ2o3XAxI6MXKFQyCV3zHl46OqEHJFE da4IVib4XE1yV8fxu1fvXyi6Z4mvG/+qNpYBrtLW5VU0gI3mskC8S4ncGteoKoO04pXY aJmX9IRHNLiHscJ+Wu1J3XKthAPCD1qIF7DTeouMXVEFpvqv6TtuTLmobv2M4QHKDIl8 uZ9g== X-Forwarded-Encrypted: i=1; AJvYcCV7fJn+/S/rjzqNLOxXH3MO3YfSb9z8sDrnsHzulZd/GRbBDwJbFEhcT5cv7bHgGlFFWZ5g9UKJn1329H44yw==@lists.linux.dev X-Gm-Message-State: AOJu0YzlV7I54DtLt1fQmOHt85CUZbiIVSvoVGgeNYTsLVrxWF1Rs8JR IKR0AqQza0TH0vIupEAnuM5/TjnsyFK+oMzuJ0lpzDt7nZFPJOrkbZPTQ0RMalI7aaPvDPgRkCx FrQ== 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: Precedence: bulk X-Mailing-List: virtualization@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: 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 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.