From: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
To: Borislav Petkov <bp@alien8.de>
Cc: linux-kernel@vger.kernel.org, tglx@linutronix.de,
mingo@redhat.com, dave.hansen@linux.intel.com,
Thomas.Lendacky@amd.com, nikunj@amd.com, Santosh.Shukla@amd.com,
Vasant.Hegde@amd.com, Suravee.Suthikulpanit@amd.com,
David.Kaplan@amd.com, x86@kernel.org, hpa@zytor.com,
peterz@infradead.org, seanjc@google.com, pbonzini@redhat.com,
kvm@vger.kernel.org, kirill.shutemov@linux.intel.com,
huibo.wang@amd.com, naveen.rao@amd.com
Subject: Re: [RFC v2 01/17] x86/apic: Add new driver for Secure AVIC
Date: Wed, 2 Apr 2025 16:04:34 +0530 [thread overview]
Message-ID: <18538e70-aadf-4891-964e-4f8a06d85e5a@amd.com> (raw)
In-Reply-To: <20250402094736.GAZ-0HuG0uVznq5wX_@fat_crate.local>
On 4/2/2025 3:17 PM, Borislav Petkov wrote:
> On Tue, Apr 01, 2025 at 10:42:17AM +0530, Neeraj Upadhyay wrote:
>>> diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
>>> index edc31615cb67..ecf86b8a6601 100644
>>> --- a/arch/x86/include/asm/msr-index.h
>>> +++ b/arch/x86/include/asm/msr-index.h
>>> @@ -685,8 +685,14 @@
>>> #define MSR_AMD64_SNP_VMSA_REG_PROT BIT_ULL(MSR_AMD64_SNP_VMSA_REG_PROT_BIT)
>>> #define MSR_AMD64_SNP_SMT_PROT_BIT 17
>>> #define MSR_AMD64_SNP_SMT_PROT BIT_ULL(MSR_AMD64_SNP_SMT_PROT_BIT)
>>> +
>>> #define MSR_AMD64_SNP_SECURE_AVIC_BIT 18
>>> -#define MSR_AMD64_SNP_SECURE_AVIC BIT_ULL(MSR_AMD64_SNP_SECURE_AVIC_BIT)
>>> +#ifdef CONFIG_AMD_SECURE_AVIC
>>> +#define MSR_AMD64_SNP_SECURE_AVIC BIT_ULL(MSR_AMD64_SNP_SECURE_AVIC_BIT)
>>> +#else
>>> +#define MSR_AMD64_SNP_SECURE_AVIC 0
>>> +#endif
>>> +
>>
>> I missed this part. I think this does not work because if CONFIG_AMD_SECURE_AVIC
>> is not enabled, MSR_AMD64_SNP_SECURE_AVIC bit becomes 0 in both SNP_FEATURES_IMPL_REQ
>> and SNP_FEATURES_PRESENT.
>>
>> So, snp_get_unsupported_features() won't report SECURE_AVIC feature as not being
>> enabled in guest launched with SECURE_AVIC vmsa feature enabled. Thoughts?
>
> Your formulations are killing me :-P
>
> ... won't report.. as not being enabled ... with feature enabled.
>
> Double negation with a positive at the end.
>
> So this translates to
>
> "will report as enabled when enabled"
>
> which doesn't make too much sense.
>
> *IF* you have CONFIG_AMD_SECURE_AVIC disabled, then you don't have SAVIC
> support and then SAVIC VMSA feature bit better be 0.
>
> Or what do you mean?
>
My bad. Let me try again.
In previous sentence
"SECURE_AVIC feature as not being enabled" - SAVIC not enabled inside guest.
"SECURE_AVIC vmsa feature enabled" - SAVIC enabled/active in hypervisor for that guest.
This is basically continuation of our previous discussion here [1]
- "sev_status" reports the SEV features enabled/active in Hypervisor for a guest.
- If guest is launched (qemu/VMM launch) with SAVIC VMSA feature enabled, hypervisor
uses SAVIC interrupt injection flow for that guest.
SAVIC VMSA feature is reported in "sev_status" and tells guest that SAVIC
functionality is active (in hypervisor) for that guest.
- snp_get_unsupported_features() looks like below.
It checks that, for the feature bits which are part of SNP_FEATURES_IMPL_REQ,
if they are enabled in hypervisor (and so reported in sev_status),
guest need to implement/enable those features. SAVIC also falls in that category
of SNP features.
So, if CONFIG_AMD_SECURE_AVIC is disabled, guest would run with SAVIC feature
disabled in guest. This would cause undefined behavior for that guest if SAVIC
feature is active for that guest in hypervisor.
u64 snp_get_unsupported_features(u64 status) << status = sev_status
{
if (!(status & MSR_AMD64_SEV_SNP_ENABLED))
return 0;
return status & SNP_FEATURES_IMPL_REQ & ~SNP_FEATURES_PRESENT;
}
/*
* SNP_FEATURES_IMPL_REQ is the mask of SNP features that will need
* guest side implementation for proper functioning of the guest. If any
* of these features are enabled in the hypervisor but are lacking guest
* side implementation, the behavior of the guest will be undefined. The
* guest could fail in non-obvious way making it difficult to debug.
*/
#define SNP_FEATURES_IMPL_REQ ...
[1] https://lore.kernel.org/lkml/20241009110224.GGZwZiwD27ZvME841d@fat_crate.local/#t
- Neeraj
next prev parent reply other threads:[~2025-04-02 10:34 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-26 9:05 [RFC v2 00/17] AMD: Add Secure AVIC Guest Support Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 01/17] x86/apic: Add new driver for Secure AVIC Neeraj Upadhyay
2025-03-20 15:51 ` Borislav Petkov
2025-03-21 3:44 ` Neeraj Upadhyay
2025-03-21 13:55 ` Borislav Petkov
2025-03-21 16:09 ` Neeraj Upadhyay
2025-03-21 17:11 ` Borislav Petkov
2025-04-01 5:12 ` Neeraj Upadhyay
2025-04-02 9:47 ` Borislav Petkov
2025-04-02 10:34 ` Neeraj Upadhyay [this message]
2025-04-07 13:17 ` Borislav Petkov
2025-04-07 16:17 ` Neeraj Upadhyay
2025-03-21 12:44 ` Thomas Gleixner
2025-03-21 13:52 ` Borislav Petkov
2025-03-21 12:53 ` Thomas Gleixner
2025-03-21 13:25 ` Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 02/17] x86/apic: Initialize Secure AVIC APIC backing page Neeraj Upadhyay
2025-03-21 13:08 ` Thomas Gleixner
2025-03-21 13:49 ` Neeraj Upadhyay
2025-03-21 16:32 ` Francesco Lavra
2025-03-21 17:00 ` Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 03/17] x86/apic: Populate .read()/.write() callbacks of Secure AVIC driver Neeraj Upadhyay
2025-03-21 13:38 ` Thomas Gleixner
2025-03-21 14:00 ` Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 04/17] x86/apic: Initialize APIC ID for Secure AVIC Neeraj Upadhyay
2025-03-21 13:52 ` Thomas Gleixner
2025-03-21 15:11 ` Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 05/17] x86/apic: Add update_vector callback " Neeraj Upadhyay
2025-03-21 14:27 ` Thomas Gleixner
2025-03-21 15:35 ` Neeraj Upadhyay
2025-03-25 12:10 ` Neeraj Upadhyay
2025-03-27 10:27 ` Thomas Gleixner
2025-03-27 11:17 ` Neeraj Upadhyay
2025-03-27 12:18 ` Thomas Gleixner
2025-03-27 12:30 ` Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 06/17] x86/apic: Add support to send IPI " Neeraj Upadhyay
2025-03-21 15:06 ` Thomas Gleixner
2025-04-01 10:25 ` Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 07/17] x86/apic: Support LAPIC timer " Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 08/17] x86/sev: Initialize VGIF for secondary VCPUs " Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 09/17] x86/apic: Add support to send NMI IPI " Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 10/17] x86/apic: Allow NMI to be injected from hypervisor " Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 11/17] x86/sev: Enable NMI support " Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 12/17] x86/apic: Read and write LVT* APIC registers from HV for SAVIC guests Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 13/17] x86/apic: Handle EOI writes " Neeraj Upadhyay
2025-03-21 15:41 ` Thomas Gleixner
2025-03-21 17:11 ` Sean Christopherson
2025-03-27 10:48 ` Thomas Gleixner
2025-03-27 12:20 ` Thomas Gleixner
2025-03-27 14:19 ` Sean Christopherson
2025-03-27 16:54 ` Thomas Gleixner
2025-02-26 9:05 ` [RFC v2 14/17] x86/apic: Add kexec support for Secure AVIC Neeraj Upadhyay
2025-03-21 15:48 ` Thomas Gleixner
2025-04-01 10:35 ` Neeraj Upadhyay
2025-04-01 18:31 ` Thomas Gleixner
2025-04-02 2:40 ` Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 15/17] x86/apic: Enable Secure AVIC in Control MSR Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 16/17] x86/sev: Prevent SECURE_AVIC_CONTROL MSR interception for Secure AVIC guests Neeraj Upadhyay
2025-02-26 9:05 ` [RFC v2 17/17] x86/sev: Indicate SEV-SNP guest supports Secure AVIC Neeraj Upadhyay
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18538e70-aadf-4891-964e-4f8a06d85e5a@amd.com \
--to=neeraj.upadhyay@amd.com \
--cc=David.Kaplan@amd.com \
--cc=Santosh.Shukla@amd.com \
--cc=Suravee.Suthikulpanit@amd.com \
--cc=Thomas.Lendacky@amd.com \
--cc=Vasant.Hegde@amd.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=huibo.wang@amd.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=naveen.rao@amd.com \
--cc=nikunj@amd.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®