Thread (19 messages) 19 messages, 3 authors, 2025-05-16

RE: [RFC PATCH 4/6] x86/Hyper-V: Allow Hyper-V to inject Hyper-V vectors

From: Michael Kelley <hidden>
Date: 2025-05-14 16:54:40
Also in: lkml

From: Tianyu Lan <redacted> Sent: Tuesday, May 6, 2025 6:07 AM
Update Subject prefix to "x86/hyperv".
quoted hunk ↗ jump to hunk
When Secure AVIC is enabled, call Secure AVIC
function to allow Hyper-V to inject REENLIGHTENMENT,
STIMER0 and CALLBACK vectors.

Signed-off-by: Tianyu Lan <redacted>
---
 arch/x86/hyperv/hv_init.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)
diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c
index ddeb40930bc8..d75df5c3965d 100644
--- a/arch/x86/hyperv/hv_init.c
+++ b/arch/x86/hyperv/hv_init.c
@@ -131,6 +131,18 @@ static int hv_cpu_init(unsigned int cpu)
 		wrmsrl(HV_X64_MSR_VP_ASSIST_PAGE, msr.as_uint64);
 	}

+	/* Allow Hyper-V vector to be injected from Hypervisor. */
+	if (ms_hyperv.features & HV_ACCESS_REENLIGHTENMENT)
+		x2apic_savic_update_vector(cpu,
+					   HYPERV_REENLIGHTENMENT_VECTOR, true);
This will allow Hyper-V to submit the re-enlightenment interrupt on
any vCPU, even though the Linux guest has programmed the interrupt
to only arrive to a particular vCPU.  That selected vCPU is set up in
set_hv_tscchange_cb(), and maintained in clear_hv_tscchange_cb()
and in hv_cpu_die(). I'm not super familiar with the re-enlightenment
code, but I don't see a problem if Hyper-V sends the interrupt on an
unexpected vCPU.  So it's probably OK to enable this interrupt vector
on all vCPUs.
+
+	if (ms_hyperv.misc_features & HV_STIMER_DIRECT_MODE_AVAILABLE)
+		x2apic_savic_update_vector(cpu,
+					   HYPERV_STIMER0_VECTOR, true);
+
+	x2apic_savic_update_vector(cpu, HYPERVISOR_CALLBACK_VECTOR, true);
This is redundant with Patch 3 of your patch set. In Patch 3, vmbus_interrupt
is set to HYPERVISOR_CALLBACK_VECTOR.
+
+
 	return hyperv_init_ghcb();
 }

--
2.25.1
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help