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: Fri, 21 Mar 2025 09:14:15 +0530 [thread overview]
Message-ID: <a7422464-4571-4eb3-b90c-863d8b74adca@amd.com> (raw)
In-Reply-To: <20250320155150.GNZ9w5lh9ndTenkr_S@fat_crate.local>
On 3/20/2025 9:21 PM, Borislav Petkov wrote:
> On Wed, Feb 26, 2025 at 02:35:09PM +0530, Neeraj Upadhyay wrote:
>> +config AMD_SECURE_AVIC
>> + bool "AMD Secure AVIC"
>> + depends on X86_X2APIC
>> + help
>> + This enables AMD Secure AVIC support on guests that have this feature.
>
> "Enable this to get ..."
>
Will update.
>> + AMD Secure AVIC provides hardware acceleration for performance sensitive
>> + APIC accesses and support for managing guest owned APIC state for SEV-SNP
>> + guests. Secure AVIC does not support xapic mode. It has functional
>> + dependency on x2apic being enabled in the guest.
>> +
>> + If you don't know what to do here, say N.
>> +
>> config X86_POSTED_MSI
>> bool "Enable MSI and MSI-x delivery by posted interrupts"
>> depends on X86_64 && IRQ_REMAP
>> @@ -1557,6 +1570,7 @@ config AMD_MEM_ENCRYPT
>> select X86_MEM_ENCRYPT
>> select UNACCEPTED_MEMORY
>> select CRYPTO_LIB_AESGCM
>> + select AMD_SECURE_AVIC
>
> AMD_MEM_ENCRYPT doesn't absolutely need AMD_SECURE_AVIC so this can go.
>
The intent here is to prevent a configuration where CONFIG_AMD_SECURE_AVIC
is disabled in build and sev_status (features enabled in hypervisor) says Secure
AVIC is enabled. In this configuration, while SNP_FEATURES_PRESENT says
Secure AVIC feature is present in guest and snp_get_unsupported_features()
would not flag mismatched features between host and guest, guest would boot
without Secure AVIC apic driver being selected. Do you think we should
handle this case differently and not force select AMD_SECURE_AVIC config
when AMD_MEM_ENCRYPT config is enabled?
#define SNP_FEATURES_PRESENT (MSR_AMD64_SNP_DEBUG_SWAP | \
MSR_AMD64_SNP_SECURE_TSC | \
MSR_AMD64_SNP_SECURE_AVIC)
u64 snp_get_unsupported_features(u64 status)
{
if (!(status & MSR_AMD64_SEV_SNP_ENABLED))
return 0;
return status & SNP_FEATURES_IMPL_REQ & ~SNP_FEATURES_PRESENT;
}
>> help
>> Say yes to enable support for the encryption of system memory.
>> This requires an AMD processor that supports Secure Memory
>
> ...
>
>> +static void x2apic_savic_send_IPI(int cpu, int vector)
>> +{
>> + u32 dest = per_cpu(x86_cpu_to_apicid, cpu);
>> +
>> + /* x2apic MSRs are special and need a special fence: */
>> + weak_wrmsr_fence();
>> + __x2apic_send_IPI_dest(dest, vector, APIC_DEST_PHYSICAL);
>> +}
>> +
>> +static void
>
> Unnecessary line break.
>
Will update.
>> +__send_IPI_mask(const struct cpumask *mask, int vector, int apic_dest)
>> +{
>> + unsigned long query_cpu;
>> + unsigned long this_cpu;
>> + unsigned long flags;
>> +
>> + /* x2apic MSRs are special and need a special fence: */
>> + weak_wrmsr_fence();
>> +
>> + local_irq_save(flags);
>> +
>> + this_cpu = smp_processor_id();
>> + for_each_cpu(query_cpu, mask) {
>> + if (apic_dest == APIC_DEST_ALLBUT && this_cpu == query_cpu)
>> + continue;
>> + __x2apic_send_IPI_dest(per_cpu(x86_cpu_to_apicid, query_cpu),
>> + vector, APIC_DEST_PHYSICAL);
>> + }
>> + local_irq_restore(flags);
>> +}
>> +
>> +static void x2apic_savic_send_IPI_mask(const struct cpumask *mask, int vector)
>> +{
>> + __send_IPI_mask(mask, vector, APIC_DEST_ALLINC);
>> +}
>> +
>> +static void x2apic_savic_send_IPI_mask_allbutself(const struct cpumask *mask, int vector)
>> +{
>> + __send_IPI_mask(mask, vector, APIC_DEST_ALLBUT);
>> +}
>> +
>> +static int x2apic_savic_probe(void)
>> +{
>> + if (!cc_platform_has(CC_ATTR_SNP_SECURE_AVIC))
>> + return 0;
>> +
>> + if (!x2apic_mode) {
>> + pr_err("Secure AVIC enabled in non x2APIC mode\n");
>> + snp_abort();
>> + }
>> +
>> + pr_info("Secure AVIC Enabled\n");
>
> That's not necessary.
>
Will update.
> Actually, you could figure out why that
>
> pr_info("Switched APIC routing to: %s\n", driver->name);
>
> doesn't come out in current kernels anymore:
>
Interesting. I see it working on 6.14-rc7 and master branch.
dmesg | grep -i "switched apic"
[ 1.044435] APIC: Switched APIC routing to: physical x2apic
- Neeraj
> $ dmesg | grep -i "switched apic"
> $
>
> and fix that as a separate patch.
>
> Looks like it broke in 6.10 or so:
>
> $ grep -E "Switched APIC" *
> 04-rc7+:Switched APIC routing to physical flat.
> 05-rc1+:Switched APIC routing to physical flat.
> 05-rc2+:Switched APIC routing to physical flat.
> 05-rc3+:Switched APIC routing to physical flat.
> 05-rc4+:APIC: Switched APIC routing to: physical flat
> 05-rc6+:Switched APIC routing to physical flat.
> 06-rc4+:APIC: Switched APIC routing to: physical flat
> 06-rc6+:APIC: Switched APIC routing to: physical flat
> 07-0+:APIC: Switched APIC routing to: physical flat
> 07-rc1+:APIC: Switched APIC routing to: physical flat
> 07-rc7+:APIC: Switched APIC routing to: physical flat
> 08-rc1+:APIC: Switched APIC routing to: physical flat
> 08-rc3+:APIC: Switched APIC routing to: physical flat
> 08-rc6+:APIC: Switched APIC routing to: physical flat
> 08-rc7+:APIC: Switched APIC routing to: physical flat
> 09-rc7+:APIC: Switched APIC routing to: physical flat
> 10-rc1+:APIC: Switched APIC routing to: physical flat
> 10-rc6+:APIC: Switched APIC routing to: physical flat
> <--- EOF
>
> Thx.
>
>
next prev parent reply other threads:[~2025-03-21 3:44 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 [this message]
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
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=a7422464-4571-4eb3-b90c-863d8b74adca@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®