From nobody Mon Feb 9 18:01:22 2026 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 C003C2728C1 for ; Tue, 10 Jun 2025 22:58:28 +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=1749596311; cv=none; b=Q7kjHvZp33X+++nN+n6lptc5dwmfKIJs8uNSmvV0TKRzc2Iutrkfv5H3f9+eaPz15PPNZ5A485ac1tXcsMc82rXpn2fhVDB0wSQGDZJpX46KXvd+KlSCA4MktDEUYlyCoJKr9eK3bx2PCI9dv5P7+iHCE6O+7+wkTfaOmH+la0E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749596311; c=relaxed/simple; bh=3W8zBfO4us4fjeyfCjy2wBE++xyIbNCjBla8RMXLlM0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=c1TBuYboMkpHjjoHKgGRXXz3CC6oUofVxd2Cv9m0fR0kvzi6aSZQmcqUywRKiEZa+Wa34I4HwtTignkiCQLb8W/96OEmS6Vy9ZYhMEc2eeaRQlfSDIveINJyXNn67LiTEKVvZHZMe86hnad8PHxyqeGm/HPW9rPoxJIttSacA/M= 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=BKo7RoIF; 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="BKo7RoIF" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-234b133b428so40455995ad.3 for ; Tue, 10 Jun 2025 15:58:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749596308; x=1750201108; 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=ZO7RReyW+IQoV593Vs023wxtAUsIe6zgC5GuAJ1RIgA=; b=BKo7RoIFVtMtDO/60TnK4KznJ6iOAkd6Pbu7oFzMpjYN+EbuAslLHtxY5aMdbtCe8O FQmU7kT6tZWNe04kiUlck3/Y8AM9hS9G+5Nwx0GmNaitvSUVtIYHqmkOvA3dP7iswdKU x/4ve1GDENxLHWKbBZz4qGqz9COsC/lTS+YouD3dVS4JGekInIUMTVlY7tzL/PuJauSc FVjx0zvyhji7qSTm8Q1YeHNvltsqRhe6h7VxGTMiB2d5/E3ek+ex5oKDepy5b3VFQzd5 weCQSXhpV3tolFji8joyx63CplhLwwsh5PoS5kLBJ5kGMsDlIFcbgjskxhVYwHvnQw58 Hxqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749596308; x=1750201108; 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=ZO7RReyW+IQoV593Vs023wxtAUsIe6zgC5GuAJ1RIgA=; b=JSDBBl0A67TXoLrBksgLmLM3erR+mnLsoVFgEKJCpDl8KiThg2xOiicREsYxdM5ZSI Yxkjsexp53OJJeqDk9ueN2q9dRUfGul8BtdIVOxa9zipU6hFQdSUBG4/TPFXV35KZqIR 3/iP7XZgSsgcpEhX1+rst/Mc1nQMEHVfFe9OEKI7KUNLAbYUlcAQEoxlnvQZbmBqMtRe IiCXwZNC6HKuBEjvvyWVUFupKvjR2F3sRSijc+XfsHGJF6aMErukYmW8CN1w1BiqSbES 5lBVfjwFzCPUliFGZkztCE8XoeLfSyNr7eptvzzyf5lX7uz/5gYTQw2TUKEErqunvRNc m2Sg== X-Forwarded-Encrypted: i=1; AJvYcCXZG+1DztjQfuSrleatP6///MX2f4UAMORmSIfD4WgVBC3XAJpOf1A+dXvaPA2YbV0bav3uU8yfK2nq8O0=@vger.kernel.org X-Gm-Message-State: AOJu0YztAH8ekOinhsgwg09KPB71NctVulaS48h0TUFSfh1mN0dpOCCY 6GU+uO53lo1noh7wKwDCxjqRUSNLH8OK0zRX9q3FPJ0lLQ3QWtPPlnxTCk6PQ3YVufDn01DZLsW WUrGNKg== X-Google-Smtp-Source: AGHT+IECfBJPvJrhVy9Guqg7jU3P/g39SPPVnfYnG0L9bVcS+Y2ydmzBHa3Br5U+Ll8/B2E54P8107oDqQU= X-Received: from plbb20.prod.google.com ([2002:a17:903:c14:b0:235:7e3:203]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:ecc7:b0:235:e309:7dec with SMTP id d9443c01a7336-23641b19920mr12346965ad.26.1749596308098; Tue, 10 Jun 2025 15:58:28 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 10 Jun 2025 15:57:33 -0700 In-Reply-To: <20250610225737.156318-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250610225737.156318-1-seanjc@google.com> X-Mailer: git-send-email 2.50.0.rc0.642.g800a2b2222-goog Message-ID: <20250610225737.156318-29-seanjc@google.com> Subject: [PATCH v2 28/32] KVM: SVM: Return -EINVAL instead of MSR_INVALID to signal out-of-range MSR From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Chao Gao , Borislav Petkov , Xin Li , Dapeng Mi , Francesco Lavra , Manali Shukla Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Return -EINVAL instead of MSR_INVALID from svm_msrpm_bit_nr() to indicate that the MSR isn't covered by one of the (currently) three MSRPM ranges, and delete the MSR_INVALID macro now that all users are gone. Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/nested.c | 10 +++++----- arch/x86/kvm/svm/svm.h | 10 ++++------ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index fb0ac87df00a..7ca45361ced3 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -223,10 +223,10 @@ int __init nested_svm_init_msrpm_merge_offsets(void) int i, j; =20 for (i =3D 0; i < ARRAY_SIZE(merge_msrs); i++) { - u32 bit_nr =3D svm_msrpm_bit_nr(merge_msrs[i]); + int bit_nr =3D svm_msrpm_bit_nr(merge_msrs[i]); u32 offset; =20 - if (WARN_ON(bit_nr =3D=3D MSR_INVALID)) + if (WARN_ON(bit_nr < 0)) return -EIO; =20 /* @@ -1354,9 +1354,9 @@ void svm_leave_nested(struct kvm_vcpu *vcpu) static int nested_svm_exit_handled_msr(struct vcpu_svm *svm) { gpa_t base =3D svm->nested.ctl.msrpm_base_pa; - u32 msr, bit_nr; + int write, bit_nr; u8 value, mask; - int write; + u32 msr; =20 if (!(vmcb12_is_intercept(&svm->nested.ctl, INTERCEPT_MSR_PROT))) return NESTED_EXIT_HOST; @@ -1365,7 +1365,7 @@ static int nested_svm_exit_handled_msr(struct vcpu_sv= m *svm) bit_nr =3D svm_msrpm_bit_nr(msr); write =3D svm->vmcb->control.exit_info_1 & 1; =20 - if (bit_nr =3D=3D MSR_INVALID) + if (bit_nr < 0) return NESTED_EXIT_DONE; =20 if (kvm_vcpu_read_guest(&svm->vcpu, base + bit_nr / BITS_PER_BYTE, diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index e078df15f1d8..489adc2ca3f5 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -619,9 +619,7 @@ static inline void svm_vmgexit_no_action(struct vcpu_sv= m *svm, u64 data) static_assert(SVM_MSRS_PER_RANGE =3D=3D 8192); #define SVM_MSRPM_OFFSET_MASK (SVM_MSRS_PER_RANGE - 1) =20 -#define MSR_INVALID 0xffffffffU - -static __always_inline u32 svm_msrpm_bit_nr(u32 msr) +static __always_inline int svm_msrpm_bit_nr(u32 msr) { int range_nr; =20 @@ -636,7 +634,7 @@ static __always_inline u32 svm_msrpm_bit_nr(u32 msr) range_nr =3D 2; break; default: - return MSR_INVALID; + return -EINVAL; } =20 return range_nr * SVM_MSRPM_BYTES_PER_RANGE * BITS_PER_BYTE + @@ -647,10 +645,10 @@ static __always_inline u32 svm_msrpm_bit_nr(u32 msr) static inline rtype svm_##action##_msr_bitmap_##access(unsigned long *bitm= ap, \ u32 msr) \ { \ - u32 bit_nr; \ + int bit_nr; \ \ bit_nr =3D svm_msrpm_bit_nr(msr); \ - if (bit_nr =3D=3D MSR_INVALID) \ + if (bit_nr < 0) \ return (rtype)true; \ \ return bitop##_bit(bit_nr + bit_rw, bitmap); \ --=20 2.50.0.rc0.642.g800a2b2222-goog