From nobody Fri May 9 08:37:29 2025 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) (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 C5F3820E6ED for <linux-kernel@vger.kernel.org>; Tue, 1 Apr 2025 15:49:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743522558; cv=none; b=d5sneqFIxUcW49TaTIN0s1XN/XuluRIkErB57FsHPfb+8abfzHBJpkIv7PtyJhqdvqamVPBa32StYJ+RMJAQOAA5Ib6LWpD3hxbQ9stoLITkuw6A/20cQmghX9ot/XTYhl7N3Zt/6xjaMG9QMerwLbgS77QQxef7S4HfWVgH/Ks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743522558; c=relaxed/simple; bh=vhm5JRAE6njpdjScz5UK8LdwniERJDF2bJGfN6xBYh4=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=kDI9fLEaC0oMVvxQXakINSZkoU0EDWSCulCGcszHaKdL1kbV4y2faH4mpwMtepEz8/PECwUeGg9BRkoIkEFJitYUU6/pQlbE8NtrlWEUV/+lnLzJQi12hPjCwrHOX/V6iVBCdrq0w+nHhc9PrVZwCU2JBHFA1pLvmgsU35u9iKw= 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=VztYwNuw; arc=none smtp.client-ip=209.85.214.202 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="VztYwNuw" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-2241e7e3addso91385055ad.1 for <linux-kernel@vger.kernel.org>; Tue, 01 Apr 2025 08:49:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1743522555; x=1744127355; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=8wH3EOfhowl2ah+tdgIUAwIwU2yTiFV9tKRtcsqEfls=; b=VztYwNuw5CBmlg1pU1133QTiIJZWe/w5dJA5xCrGtbVVr1N/XvO3tqGbQPZjJHAEGe KMZMoiqY35jND/HUxDESZLQs87IvgTZzyT+QSGuFU5wz3+lgYkzZ8iL2EPmQL7WXsW5O DX4n3njQwEJGbw0V18WXrVY5fHFzfL5YryG67WFhiZeI+8iwU0ldaIbh7C69K5DSsCZJ qUwbavOIyVJ9x4ZyaY6xvxPdjb6pGhXUlSTJM0woBPRKvuh9cb8+XMrj5EU6Vl3Neqh1 kUHfQk6PShDZxnkT9PTicnSxfJHj9DWZzYsrq3CQBcPR/ComwQIfrB7g8Q2O+V/83i+f tu8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743522555; x=1744127355; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=8wH3EOfhowl2ah+tdgIUAwIwU2yTiFV9tKRtcsqEfls=; b=LgCbytwfN524h47v3Gp3AvSVWa87Bk7TQiB/kcccT0EOSdODnOKzYaddhC9e3xIUzV DuTfOlD4AJGDRWcdLzSPlx5NBgd6yicdFdQVzqv3Ad93yhl9kIbHvozeTwm7t/jKx0N9 n+cKCKIVuV0dOj9y+jpMHwS7t9/fOwXMtzWkaCP2jz2KiwT6ZctHPOdAQ3KyYPPm/omT Vtt/15nR+yOBZX6KOm26RTwTv74qY0WCxuLxvDZ9htubCC6T+1SB8Kgeqm080j/8N4D+ B0awNoNU3jjY7/PUirnW7zy43mtxm8Z92/a+2LBbjbRdXuaO9vQF6cAAc71z0D957979 RnSA== X-Forwarded-Encrypted: i=1; AJvYcCWAnQc6gusJGjM2lEDTw7j3R1DAxrN/9XNLe9wciq2kHDfzslu0AWu0P+hRyZdLAX8ac0Q8zoCHOcdtXOE=@vger.kernel.org X-Gm-Message-State: AOJu0YwZybdrSjKRg4G8DPTIkyQd9Vh1jhLq4rUEs9ExXRNo41rz3Xce sapqUIirpf9bsStrdUm9MJV3670zpkKwfoxjBjV6IoEV8Km42WjrxrBfhrT4DJ5mqW50Mf4ll1a 57g== X-Google-Smtp-Source: AGHT+IH86RKe+94T4SRRkFodCtx5qKlady13L3+LhOcM6mMcYsZC46a6axWch98wxyXO/mby85l8LBVLSYY= X-Received: from pltl12.prod.google.com ([2002:a17:902:70cc:b0:226:342c:5750]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:f693:b0:220:ca39:d453 with SMTP id d9443c01a7336-2295be7969fmr50326595ad.17.1743522555079; Tue, 01 Apr 2025 08:49:15 -0700 (PDT) Reply-To: Sean Christopherson <seanjc@google.com> Date: Tue, 1 Apr 2025 08:47:26 -0700 In-Reply-To: <20250401154727.835231-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> Mime-Version: 1.0 References: <20250401154727.835231-1-seanjc@google.com> X-Mailer: git-send-email 2.49.0.472.ge94155a9ec-goog Message-ID: <20250401154727.835231-2-seanjc@google.com> Subject: [PATCH 1/2] KVM: VMX: Assert that IRQs are disabled when putting vCPU on PI wakeup list From: Sean Christopherson <seanjc@google.com> To: Sean Christopherson <seanjc@google.com>, Paolo Bonzini <pbonzini@redhat.com> Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Yan Zhao <yan.y.zhao@intel.com> Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Assert that IRQs are already disabled when putting a vCPU on a CPU's PI wakeup list, as opposed to saving/disabling+restoring IRQs. KVM relies on IRQs being disabled until the vCPU task is fully scheduled out, i.e. until the scheduler has dropped all of its per-CPU locks (e.g. for the runqueue), as attempting to wake the task while it's being scheduled out could lead to deadlock. Signed-off-by: Sean Christopherson <seanjc@google.com> Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Reviewed-by: Yan Zhao <yan.y.zhao@intel.com> --- arch/x86/kvm/vmx/posted_intr.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/arch/x86/kvm/vmx/posted_intr.c b/arch/x86/kvm/vmx/posted_intr.c index ec08fa3caf43..840d435229a8 100644 --- a/arch/x86/kvm/vmx/posted_intr.c +++ b/arch/x86/kvm/vmx/posted_intr.c @@ -148,9 +148,8 @@ static void pi_enable_wakeup_handler(struct kvm_vcpu *v= cpu) struct pi_desc *pi_desc =3D vcpu_to_pi_desc(vcpu); struct vcpu_vmx *vmx =3D to_vmx(vcpu); struct pi_desc old, new; - unsigned long flags; =20 - local_irq_save(flags); + lockdep_assert_irqs_disabled(); =20 raw_spin_lock(&per_cpu(wakeup_vcpus_on_cpu_lock, vcpu->cpu)); list_add_tail(&vmx->pi_wakeup_list, @@ -176,8 +175,6 @@ static void pi_enable_wakeup_handler(struct kvm_vcpu *v= cpu) */ if (pi_test_on(&new)) __apic_send_IPI_self(POSTED_INTR_WAKEUP_VECTOR); - - local_irq_restore(flags); } =20 static bool vmx_needs_pi_wakeup(struct kvm_vcpu *vcpu) --=20 2.49.0.472.ge94155a9ec-goog