From 2f529f9b558ca1c1bd74be7437a84e4711743404 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 01 Nov 2024 02:11:33 +0000
Subject: [PATCH] add xenomai
---
kernel/arch/x86/kernel/kvm.c | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/kernel/arch/x86/kernel/kvm.c b/kernel/arch/x86/kernel/kvm.c
index fe9babe..6988375 100644
--- a/kernel/arch/x86/kernel/kvm.c
+++ b/kernel/arch/x86/kernel/kvm.c
@@ -255,12 +255,15 @@
{
u32 flags = kvm_read_and_reset_apf_flags();
irqentry_state_t state;
+ unsigned long irqflags;
if (!flags)
return false;
state = irqentry_enter(regs);
+ oob_trap_notify(X86_TRAP_PF, regs);
instrumentation_begin();
+ irqflags = hard_cond_local_irq_save();
/*
* If the host managed to inject an async #PF into an interrupt
@@ -279,7 +282,9 @@
WARN_ONCE(1, "Unexpected async PF flags: %x\n", flags);
}
+ hard_cond_local_irq_restore(irqflags);
instrumentation_end();
+ oob_trap_unwind(X86_TRAP_PF, regs);
irqentry_exit(regs, state);
return true;
}
@@ -478,6 +483,9 @@
static void kvm_guest_cpu_offline(bool shutdown)
{
+ unsigned long flags;
+
+ flags = hard_local_irq_save();
kvm_disable_steal_time();
if (kvm_para_has_feature(KVM_FEATURE_PV_EOI))
wrmsrl(MSR_KVM_PV_EOI_EN, 0);
@@ -485,15 +493,16 @@
if (!shutdown)
apf_task_wake_all();
kvmclock_disable();
+ hard_local_irq_restore(flags);
}
static int kvm_cpu_online(unsigned int cpu)
{
unsigned long flags;
- local_irq_save(flags);
+ local_irq_save_full(flags);
kvm_guest_cpu_init();
- local_irq_restore(flags);
+ local_irq_restore_full(flags);
return 0;
}
@@ -907,7 +916,7 @@
if (in_nmi())
return;
- local_irq_save(flags);
+ flags = hard_local_irq_save();
if (READ_ONCE(*ptr) != val)
goto out;
@@ -923,7 +932,7 @@
safe_halt();
out:
- local_irq_restore(flags);
+ hard_local_irq_restore(flags);
}
#ifdef CONFIG_X86_32
--
Gitblit v1.6.2