Pull kvm fixes from Paolo Bonzini: "PPC: - Hide KVM_CAP_IRQFD_RESAMPLE if XIVE is enabled s390: - Fix handling of external interrupts in protected guests x86: - Resample the pending state of IOAPIC interrupts when unmasking them - Fix usage of Hyper-V "enlightened TLB" on AMD - Small fixes to real mode exceptions - Suppress pending MMIO write exits if emulator detects exception Documentation: - Fix rST syntax" * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: docs: kvm: x86: Fix broken field list KVM: PPC: Make KVM_CAP_IRQFD_RESAMPLE platform dependent KVM: s390: pv: fix external interruption loop not always detected KVM: nVMX: Do not report error code when synthesizing VM-Exit from Real Mode KVM: x86: Clear "has_error_code", not "error_code", for RM exception injection KVM: x86: Suppress pending MMIO write exits if emulator detects exception KVM: x86/ioapic: Resample the pending state of an IRQ when unmasking KVM: irqfd: Make resampler_list an RCU list KVM: SVM: Flush Hyper-V TLB when required
Showing the changes to include/linux (2 of 15 files). Show all
Unified · Split
| @@ -755,6 +755,7 @@ struct kvm { · 754 unmodified lines | |||
| 755 | struct { | 755 | struct { |
| 756 | spinlock_t lock; | 756 | spinlock_t lock; |
| 757 | struct list_head items; | 757 | struct list_head items; |
| 758 | /* resampler_list update side is protected by resampler_lock. */ | ||
| 758 | struct list_head resampler_list; | 759 | struct list_head resampler_list; |
| 759 | struct mutex resampler_lock; | 760 | struct mutex resampler_lock; |
| 760 | } irqfds; | 761 | } irqfds; |
| @@ -1986,6 +1987,9 @@ int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args); · 1225 unmodified lines | |||
| 1986 | #ifdef CONFIG_HAVE_KVM_IRQFD | 1987 | #ifdef CONFIG_HAVE_KVM_IRQFD |
| 1987 | int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args); | 1988 | int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args); |
| 1988 | void kvm_irqfd_release(struct kvm *kvm); | 1989 | void kvm_irqfd_release(struct kvm *kvm); |
| 1990 | bool kvm_notify_irqfd_resampler(struct kvm *kvm, | ||
| 1991 | unsigned int irqchip, | ||
| 1992 | unsigned int pin); | ||
| 1989 | void kvm_irq_routing_update(struct kvm *); | 1993 | void kvm_irq_routing_update(struct kvm *); |
| 1990 | #else | 1994 | #else |
| 1991 | static inline int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args) | 1995 | static inline int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args) |
| @@ -1994,6 +1998,13 @@ static inline int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args) · 2 unmodified lines | |||
| 1994 | } | 1998 | } |
| 1995 | 1999 | ||
| 1996 | static inline void kvm_irqfd_release(struct kvm *kvm) {} | 2000 | static inline void kvm_irqfd_release(struct kvm *kvm) {} |
| 2001 | |||
| 2002 | static inline bool kvm_notify_irqfd_resampler(struct kvm *kvm, | ||
| 2003 | unsigned int irqchip, | ||
| 2004 | unsigned int pin) | ||
| 2005 | { | ||
| 2006 | return false; | ||
| 2007 | } | ||
| 1997 | #endif | 2008 | #endif |
| 1998 | 2009 | ||
| 1999 | #else | 2010 | #else |
| @@ -31,7 +31,7 @@ struct kvm_kernel_irqfd_resampler { · 30 unmodified lines | |||
| 31 | /* | 31 | /* |
| 32 | * Entry in list of kvm->irqfd.resampler_list. Use for sharing | 32 | * Entry in list of kvm->irqfd.resampler_list. Use for sharing |
| 33 | * resamplers among irqfds on the same gsi. | 33 | * resamplers among irqfds on the same gsi. |
| 34 | * Accessed and modified under kvm->irqfds.resampler_lock | 34 | * RCU list modified under kvm->irqfds.resampler_lock |
| 35 | */ | 35 | */ |
| 36 | struct list_head link; | 36 | struct list_head link; |
| 37 | }; | 37 | }; |