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 | 755 | struct { |
| 756 | 756 | spinlock_t lock; |
| 757 | 757 | struct list_head items; |
| 758 | + /* resampler_list update side is protected by resampler_lock. */ | |
| 758 | 759 | struct list_head resampler_list; |
| 759 | 760 | struct mutex resampler_lock; |
| 760 | 761 | } irqfds; |
| @@ -1986,6 +1987,9 @@ int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args); · 1225 unmodified lines | ||
| 1986 | 1987 | #ifdef CONFIG_HAVE_KVM_IRQFD |
| 1987 | 1988 | int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args); |
| 1988 | 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 | 1993 | void kvm_irq_routing_update(struct kvm *); |
| 1990 | 1994 | #else |
| 1991 | 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 | 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 | 2008 | #endif |
| 1998 | 2009 | |
| 1999 | 2010 | #else |
| @@ -31,7 +31,7 @@ struct kvm_kernel_irqfd_resampler { · 30 unmodified lines | ||
| 31 | 31 | /* |
| 32 | 32 | * Entry in list of kvm->irqfd.resampler_list. Use for sharing |
| 33 | 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 | 36 | struct list_head link; |
| 37 | 37 | }; |