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