The last missing piece to having vmx_l1d_flush() take interrupts after
VMEXIT into account is to set the kvm_cpu_l1tf_flush_l1d per-cpu flag on
irq entry.
Issue calls to kvm_set_cpu_l1tf_flush_l1d() from entering_irq(),
ipi_entering_ack_irq(), smp_reschedule_interrupt() and
uv_bau_message_interrupt().
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Nicolai Stange <nstange@suse.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
 #include <asm/fixmap.h>
 #include <asm/mpspec.h>
 #include <asm/msr.h>
+#include <asm/hardirq.h>
 
 #define ARCH_APICTIMER_STOPS_ON_C3     1
 
 static inline void entering_irq(void)
 {
        irq_enter();
+       kvm_set_cpu_l1tf_flush_l1d();
 }
 
 static inline void entering_ack_irq(void)
 {
        irq_enter();
        ack_APIC_irq();
+       kvm_set_cpu_l1tf_flush_l1d();
 }
 
 static inline void exiting_irq(void)
 
 {
        ack_APIC_irq();
        inc_irq_stat(irq_resched_count);
+       kvm_set_cpu_l1tf_flush_l1d();
 
        if (trace_resched_ipi_enabled()) {
                /*
 
        struct msg_desc msgdesc;
 
        ack_APIC_irq();
+       kvm_set_cpu_l1tf_flush_l1d();
        time_start = get_cycles();
 
        bcp = &per_cpu(bau_control, smp_processor_id());