mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
To: Borislav Petkov <bp@alien8.de>,
	"Kirill A. Shutemov" <kirill@shutemov.name>
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
Subject: Re: [RFC 00/14] AMD: Add Secure AVIC Guest Support
Date: Tue, 29 Oct 2024 15:54:24 +0530	[thread overview]
Message-ID: <708594f6-78d3-4877-9a1e-b37c55ad0d39@amd.com> (raw)
In-Reply-To: <20241029094711.GAZyCvH-ZMHskXAwuv@fat_crate.local>



On 10/29/2024 3:17 PM, Borislav Petkov wrote:
> On Fri, Oct 18, 2024 at 10:54:21AM +0300, Kirill A. Shutemov wrote:
>> I think it has to be addressed before it got merged. Or we will get a
>> regression.
> 
> ... or temporarily disable kexec when SAVIC is present.
> 

Thanks! I plan to do something like below patch for the next version.
Verified Secure AVIC guest kexec with this.



- Neeraj

-----------------------------------------------------------------------

From 80a4901644fa8a9ed2c6f690fbba4b8a6176b215 Mon Sep 17 00:00:00 2001
From: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
Date: Tue, 29 Oct 2024 15:38:21 +0530
Subject: [RFC 15/14] x86/apic: Add kexec support for Secure AVIC

Add a ->teardown callback to disable Secure AVIC before
rebooting into the new kernel. This ensures that the new
kernel does not access the old APIC backing page which was
allocated by the previous kernel. This can happen if there
are any APIC accesses done during guest boot before Secure
AVIC driver probe is done by the new kernel (as Secure AVIC
remained enabled in control msr).

Signed-off-by: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
---

This is dependent on SNP guest supports patches [1]


[1] https://lore.kernel.org/lkml/cover.1722520012.git.ashish.kalra@amd.com/

 arch/x86/include/asm/apic.h         | 1 +
 arch/x86/kernel/apic/apic.c         | 3 +++
 arch/x86/kernel/apic/x2apic_savic.c | 7 +++++++
 3 files changed, 11 insertions(+)

diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
index 2d5400372470..ec332afd0277 100644
--- a/arch/x86/include/asm/apic.h
+++ b/arch/x86/include/asm/apic.h
@@ -303,6 +303,7 @@ struct apic {
        /* Probe, setup and smpboot functions */
        int     (*probe)(void);
        void    (*setup)(void);
+       void    (*teardown)(void);
        int     (*acpi_madt_oem_check)(char *oem_id, char *oem_table_id);

        void    (*init_apic_ldr)(void);
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index aeda74bf15e6..08156ac4ec6c 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -1163,6 +1163,9 @@ void disable_local_APIC(void)
        if (!apic_accessible())
                return;

+       if (apic->teardown)
+               apic->teardown();
+
        apic_soft_disable();

 #ifdef CONFIG_X86_32
diff --git a/arch/x86/kernel/apic/x2apic_savic.c b/arch/x86/kernel/apic/x2apic_savic.c
index a3f0ddc6b5b6..bb7a28f9646a 100644
--- a/arch/x86/kernel/apic/x2apic_savic.c
+++ b/arch/x86/kernel/apic/x2apic_savic.c
@@ -391,6 +391,12 @@ static void init_backing_page(void *backing_page)
        set_reg(backing_page, APIC_ID, apic_id);
 }

+static void x2apic_savic_teardown(void)
+{
+       /* Disable Secure AVIC */
+       native_wrmsr(MSR_AMD64_SECURE_AVIC_CONTROL, 0, 0);
+}
+
 static void x2apic_savic_setup(void)
 {
        void *backing_page;
@@ -447,6 +453,7 @@ static struct apic apic_x2apic_savic __ro_after_init = {
        .probe                          = x2apic_savic_probe,
        .acpi_madt_oem_check            = x2apic_savic_acpi_madt_oem_check,
        .setup                          = x2apic_savic_setup,
+       .teardown                       = x2apic_savic_teardown,

        .dest_mode_logical              = false,

--


  reply	other threads:[~2024-10-29 10:24 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-13 11:36 Neeraj Upadhyay
2024-09-13 11:36 ` [RFC 01/14] x86/apic: Add new driver for Secure AVIC Neeraj Upadhyay
2024-10-08 19:15   ` Borislav Petkov
2024-10-09  1:56     ` Neeraj Upadhyay
2024-10-09  5:23       ` Borislav Petkov
2024-10-09  6:01         ` Neeraj Upadhyay
2024-10-09 10:38           ` Borislav Petkov
2024-10-09 11:00             ` Neeraj Upadhyay
2024-10-09 11:02             ` Borislav Petkov
2024-10-09 12:38               ` Neeraj Upadhyay
2024-10-09 13:15           ` Tom Lendacky
2024-10-09 13:50             ` Neeraj Upadhyay
2024-10-09 10:10   ` Kirill A. Shutemov
2024-10-09 10:42     ` Borislav Petkov
2024-10-09 11:03       ` Kirill A. Shutemov
2024-10-09 11:22         ` Borislav Petkov
2024-10-09 12:12           ` Kirill A. Shutemov
2024-10-09 13:53             ` Borislav Petkov
2024-10-11  7:29               ` Kirill A. Shutemov
2024-11-18 21:45   ` Melody (Huibo) Wang
2024-11-21  5:05     ` Neeraj Upadhyay
2024-11-21  5:41       ` Borislav Petkov
2024-11-21  8:03         ` Neeraj Upadhyay
2024-11-21 10:53           ` Borislav Petkov
2024-11-25  7:21             ` Neeraj Upadhyay
2024-11-25 10:08               ` Borislav Petkov
2024-11-25 11:16                 ` Neeraj Upadhyay
2024-09-13 11:36 ` [RFC 02/14] x86/apic: Initialize Secure AVIC APIC backing page Neeraj Upadhyay
2024-10-09 15:27   ` Dave Hansen
2024-10-09 16:31     ` Neeraj Upadhyay
2024-10-09 17:03       ` Dave Hansen
2024-10-09 17:52         ` Neeraj Upadhyay
2024-10-23 16:30           ` Borislav Petkov
2024-10-24  4:01             ` Neeraj Upadhyay
2024-10-24 11:49               ` Borislav Petkov
2024-10-24 12:31                 ` Neeraj Upadhyay
2024-10-24 12:59                   ` Borislav Petkov
2024-10-23 16:36   ` Borislav Petkov
2024-10-24  3:24     ` Neeraj Upadhyay
2024-09-13 11:36 ` [RFC 03/14] x86/apic: Populate .read()/.write() callbacks of Secure AVIC driver Neeraj Upadhyay
2024-11-06 18:16   ` Borislav Petkov
2024-11-07  3:32     ` Neeraj Upadhyay
2024-11-07 14:28       ` Borislav Petkov
2024-11-08  8:59         ` Neeraj Upadhyay
2024-11-08 10:48           ` Borislav Petkov
2024-11-08 16:14             ` Neeraj Upadhyay
2024-11-06 19:20   ` Melody (Huibo) Wang
2024-11-07  3:33     ` Neeraj Upadhyay
2024-09-13 11:36 ` [RFC 04/14] x86/apic: Initialize APIC backing page for Secure AVIC Neeraj Upadhyay
2024-11-07 15:28   ` Borislav Petkov
2024-11-08 18:08     ` Neeraj Upadhyay
2024-11-09 16:27       ` Borislav Petkov
2024-11-09 16:51         ` Neeraj Upadhyay
2024-11-11 22:43   ` [sos-linux-ext-patches] " Melody (Huibo) Wang
2024-11-12  3:01     ` Neeraj Upadhyay
2024-09-13 11:36 ` [RFC 05/14] x86/apic: Initialize APIC ID " Neeraj Upadhyay
2024-11-09 20:13   ` [sos-linux-ext-patches] " Melody (Huibo) Wang
2024-11-10  3:55     ` Neeraj Upadhyay
2024-11-10 12:12       ` Borislav Petkov
2024-11-10 15:22         ` Neeraj Upadhyay
2024-11-10 16:34           ` Borislav Petkov
2024-11-11  3:45             ` Neeraj Upadhyay
2024-09-13 11:36 ` [RFC 06/14] x86/apic: Add update_vector callback " Neeraj Upadhyay
2024-09-13 11:36 ` [RFC 07/14] x86/apic: Add support to send IPI " Neeraj Upadhyay
2024-09-13 11:36 ` [RFC 08/14] x86/apic: Support LAPIC timer " Neeraj Upadhyay
2024-09-13 11:37 ` [RFC 09/14] x86/sev: Initialize VGIF for secondary VCPUs " Neeraj Upadhyay
2024-09-13 11:37 ` [RFC 10/14] x86/apic: Add support to send NMI IPI " Neeraj Upadhyay
2024-09-13 11:37 ` [RFC 11/14] x86/apic: Allow NMI to be injected from hypervisor " Neeraj Upadhyay
2024-09-13 11:37 ` [RFC 12/14] x86/sev: Enable NMI support " Neeraj Upadhyay
2024-09-13 11:37 ` [RFC 13/14] x86/apic: Enable Secure AVIC in Control MSR Neeraj Upadhyay
2024-09-13 11:37 ` [RFC 14/14] x86/sev: Indicate SEV-SNP guest supports Secure AVIC Neeraj Upadhyay
2024-10-17  8:23 ` [RFC 00/14] AMD: Add Secure AVIC Guest Support Kirill A. Shutemov
2024-10-18  2:33   ` Neeraj Upadhyay
2024-10-18  7:54     ` Kirill A. Shutemov
2024-10-29  9:47       ` Borislav Petkov
2024-10-29 10:24         ` Neeraj Upadhyay [this message]
2024-10-29 10:54           ` Borislav Petkov
2024-10-29 11:51           ` Kirill A. Shutemov
2024-10-29 12:15             ` Neeraj Upadhyay
2024-10-29 14:36               ` Kirill A. Shutemov
2024-10-29 15:28                 ` 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=708594f6-78d3-4877-9a1e-b37c55ad0d39@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=kirill@shutemov.name \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.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®