mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-13 12:53:27 +00:00
c7c9c56ca2
Virtual interrupt delivery avoids KVM to inject vAPIC interrupts manually, which is fully taken care of by the hardware. This needs some special awareness into existing interrupr injection path: - for pending interrupt, instead of direct injection, we may need update architecture specific indicators before resuming to guest. - A pending interrupt, which is masked by ISR, should be also considered in above update action, since hardware will decide when to inject it at right time. Current has_interrupt and get_interrupt only returns a valid vector from injection p.o.v. Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Kevin Tian <kevin.tian@intel.com> Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com> Signed-off-by: Gleb Natapov <gleb@redhat.com>
37 lines
927 B
C
37 lines
927 B
C
#ifndef __KVM_IA64_LAPIC_H
|
|
#define __KVM_IA64_LAPIC_H
|
|
|
|
#include <linux/kvm_host.h>
|
|
|
|
/*
|
|
* vlsapic
|
|
*/
|
|
struct kvm_lapic{
|
|
struct kvm_vcpu *vcpu;
|
|
uint64_t insvc[4];
|
|
uint64_t vhpi;
|
|
uint8_t xtp;
|
|
uint8_t pal_init_pending;
|
|
uint8_t pad[2];
|
|
};
|
|
|
|
int kvm_create_lapic(struct kvm_vcpu *vcpu);
|
|
void kvm_free_lapic(struct kvm_vcpu *vcpu);
|
|
|
|
int kvm_apic_match_physical_addr(struct kvm_lapic *apic, u16 dest);
|
|
int kvm_apic_match_logical_addr(struct kvm_lapic *apic, u8 mda);
|
|
int kvm_apic_match_dest(struct kvm_vcpu *vcpu, struct kvm_lapic *source,
|
|
int short_hand, int dest, int dest_mode);
|
|
int kvm_apic_compare_prio(struct kvm_vcpu *vcpu1, struct kvm_vcpu *vcpu2);
|
|
int kvm_apic_set_irq(struct kvm_vcpu *vcpu, struct kvm_lapic_irq *irq);
|
|
#define kvm_apic_present(x) (true)
|
|
#define kvm_lapic_enabled(x) (true)
|
|
|
|
static inline bool kvm_apic_vid_enabled(void)
|
|
{
|
|
/* IA64 has no apicv supporting, do nothing here */
|
|
return false;
|
|
}
|
|
|
|
#endif
|