All of lore.kernel.org
 help / color / mirror / Atom feed
From: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
To: <linux-kernel@vger.kernel.org>
Cc: <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>,
	<bp@alien8.de>, <David.Kaplan@amd.com>, <x86@kernel.org>,
	<hpa@zytor.com>, <peterz@infradead.org>, <seanjc@google.com>,
	<pbonzini@redhat.com>, <kvm@vger.kernel.org>
Subject: [RFC 08/14] x86/apic: Support LAPIC timer for Secure AVIC
Date: Fri, 13 Sep 2024 17:06:59 +0530	[thread overview]
Message-ID: <20240913113705.419146-9-Neeraj.Upadhyay@amd.com> (raw)
In-Reply-To: <20240913113705.419146-1-Neeraj.Upadhyay@amd.com>

From: Kishon Vijay Abraham I <kvijayab@amd.com>

Secure AVIC requires LAPIC timer to be emulated by hypervisor. KVM
already supports emulating LAPIC timer using hrtimers. In order
to emulate LAPIC timer, APIC_LVTT, APIC_TMICT and APIC_TDCR register
values need to be propagated to the hypervisor for arming the timer.
APIC_TMCCT register value has to be read from the hypervisor, which
is required for calibrating the APIC timer. So, read/write all APIC
timer registers from/to the hypervisor.

In addition, configure APIC_ALLOWED_IRR for the hypervisor to inject
timer interrupt using LOCAL_TIMER_VECTOR.

Signed-off-by: Kishon Vijay Abraham I <kvijayab@amd.com>
Co-developed-by: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
Signed-off-by: Neeraj Upadhyay <Neeraj.Upadhyay@amd.com>
---
 arch/x86/kernel/apic/apic.c         | 2 ++
 arch/x86/kernel/apic/x2apic_savic.c | 7 +++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index b47d1dc854c3..aeda74bf15e6 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -579,6 +579,8 @@ static void setup_APIC_timer(void)
 						0xF, ~0UL);
 	} else
 		clockevents_register_device(levt);
+
+	apic->update_vector(smp_processor_id(), LOCAL_TIMER_VECTOR, true);
 }
 
 /*
diff --git a/arch/x86/kernel/apic/x2apic_savic.c b/arch/x86/kernel/apic/x2apic_savic.c
index 30a24b70e5cb..2eab9a773005 100644
--- a/arch/x86/kernel/apic/x2apic_savic.c
+++ b/arch/x86/kernel/apic/x2apic_savic.c
@@ -94,6 +94,7 @@ static u32 x2apic_savic_read(u32 reg)
 	case APIC_TMICT:
 	case APIC_TMCCT:
 	case APIC_TDCR:
+		return read_msr_from_hv(reg);
 	case APIC_ID:
 	case APIC_LVR:
 	case APIC_TASKPRI:
@@ -142,10 +143,12 @@ static void x2apic_savic_write(u32 reg, u32 data)
 
 	switch (reg) {
 	case APIC_LVTT:
-	case APIC_LVT0:
-	case APIC_LVT1:
 	case APIC_TMICT:
 	case APIC_TDCR:
+		write_msr_to_hv(reg, data);
+		break;
+	case APIC_LVT0:
+	case APIC_LVT1:
 	/* APIC_ID is writable and configured by guest for Secure AVIC */
 	case APIC_ID:
 	case APIC_TASKPRI:
-- 
2.34.1


  parent reply	other threads:[~2024-09-13 11:39 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-13 11:36 [RFC 00/14] AMD: Add Secure AVIC Guest Support 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 ` Neeraj Upadhyay [this message]
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
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=20240913113705.419146-9-Neeraj.Upadhyay@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=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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.