Two fixes for the pull request, and an unrelated bugfix for

a host hang.
 -----BEGIN PGP SIGNATURE-----
 
 iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAl+T6RoUHHBib256aW5p
 QHJlZGhhdC5jb20ACgkQv/vSX3jHroMx2gf+PjoeMjLKtstdKDdiLFV46X7YdYKz
 sUoDhpSbiLpEus5BF6OauUWwKgB7GcsoDUnLgjN5jqkAQzoFm0YOcI2GlXS999SL
 5QIg6Vw5WF8X/7EVt6gxzC6KcWjbQvv38R/Ktd/0sMqRBPiZG7kVcWeXlopb9DaQ
 Rdgg0hNVpgDiTNrBNl5RnM7Wz/SrOZmwaotW1LcII+BkCnj9Av77v77TxN9YuvG4
 o+GMMQseFAzDjQ+jHZkHuBmPRy5dQB9ywzEIrUCubqhT04sWbQ6DhGfx45a0IgsY
 33iT28omYdMVlRd/i3KcHQ86JJSo5g7pOqLwGd1L9HjNTS5VmQ8HXNJWBA==
 =ECL9
 -----END PGP SIGNATURE-----

Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm

Pull KVM fixes from Paolo Bonzini:
 "Two fixes for this merge window, and an unrelated bugfix for a host
  hang"

* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
  KVM: ioapic: break infinite recursion on lazy EOI
  KVM: vmx: rename pi_init to avoid conflict with paride
  KVM: x86/mmu: Avoid modulo operator on 64-bit value to fix i386 build
This commit is contained in:
Linus Torvalds 2020-10-24 12:09:22 -07:00
Родитель c51ae12472 77377064c3
Коммит 9bf8d8bcf3
5 изменённых файлов: 6 добавлений и 9 удалений

Просмотреть файл

@ -197,12 +197,9 @@ static void ioapic_lazy_update_eoi(struct kvm_ioapic *ioapic, int irq)
/* /*
* If no longer has pending EOI in LAPICs, update * If no longer has pending EOI in LAPICs, update
* EOI for this vetor. * EOI for this vector.
*/ */
rtc_irq_eoi(ioapic, vcpu, entry->fields.vector); rtc_irq_eoi(ioapic, vcpu, entry->fields.vector);
kvm_ioapic_update_eoi_one(vcpu, ioapic,
entry->fields.trig_mode,
irq);
break; break;
} }
} }

Просмотреть файл

@ -209,7 +209,7 @@ static void __handle_changed_spte(struct kvm *kvm, int as_id, gfn_t gfn,
WARN_ON(level > PT64_ROOT_MAX_LEVEL); WARN_ON(level > PT64_ROOT_MAX_LEVEL);
WARN_ON(level < PG_LEVEL_4K); WARN_ON(level < PG_LEVEL_4K);
WARN_ON(gfn % KVM_PAGES_PER_HPAGE(level)); WARN_ON(gfn & (KVM_PAGES_PER_HPAGE(level) - 1));
/* /*
* If this warning were to trigger it would indicate that there was a * If this warning were to trigger it would indicate that there was a

Просмотреть файл

@ -222,7 +222,7 @@ void pi_wakeup_handler(void)
spin_unlock(&per_cpu(blocked_vcpu_on_cpu_lock, cpu)); spin_unlock(&per_cpu(blocked_vcpu_on_cpu_lock, cpu));
} }
void __init pi_init(int cpu) void __init pi_init_cpu(int cpu)
{ {
INIT_LIST_HEAD(&per_cpu(blocked_vcpu_on_cpu, cpu)); INIT_LIST_HEAD(&per_cpu(blocked_vcpu_on_cpu, cpu));
spin_lock_init(&per_cpu(blocked_vcpu_on_cpu_lock, cpu)); spin_lock_init(&per_cpu(blocked_vcpu_on_cpu_lock, cpu));

Просмотреть файл

@ -91,9 +91,9 @@ void vmx_vcpu_pi_put(struct kvm_vcpu *vcpu);
int pi_pre_block(struct kvm_vcpu *vcpu); int pi_pre_block(struct kvm_vcpu *vcpu);
void pi_post_block(struct kvm_vcpu *vcpu); void pi_post_block(struct kvm_vcpu *vcpu);
void pi_wakeup_handler(void); void pi_wakeup_handler(void);
void __init pi_init(int cpu); void __init pi_init_cpu(int cpu);
bool pi_has_pending_interrupt(struct kvm_vcpu *vcpu); bool pi_has_pending_interrupt(struct kvm_vcpu *vcpu);
int pi_update_irte(struct kvm *kvm, unsigned int host_irq, uint32_t guest_irq, int pi_update_irte(struct kvm *kvm, unsigned int host_irq, uint32_t guest_irq,
bool set); bool set);
#endif /* __KVM_X86_VMX_POSTED_INTR_H */ #endif /* __KVM_X86_VMX_POSTED_INTR_H */

Просмотреть файл

@ -8004,7 +8004,7 @@ static int __init vmx_init(void)
for_each_possible_cpu(cpu) { for_each_possible_cpu(cpu) {
INIT_LIST_HEAD(&per_cpu(loaded_vmcss_on_cpu, cpu)); INIT_LIST_HEAD(&per_cpu(loaded_vmcss_on_cpu, cpu));
pi_init(cpu); pi_init_cpu(cpu);
} }
#ifdef CONFIG_KEXEC_CORE #ifdef CONFIG_KEXEC_CORE