1. 24 Jan, 2023 6 commits
  2. 13 Jan, 2023 33 commits
  3. 11 Jan, 2023 1 commit
    • David Woodhouse's avatar
      KVM: x86/xen: Avoid deadlock by adding kvm->arch.xen.xen_lock leaf node lock · 310bc395
      David Woodhouse authored
      In commit 14243b38 ("KVM: x86/xen: Add KVM_IRQ_ROUTING_XEN_EVTCHN
      and event channel delivery") the clever version of me left some helpful
      notes for those who would come after him:
      
             /*
              * For the irqfd workqueue, using the main kvm->lock mutex is
              * fine since this function is invoked from kvm_set_irq() with
              * no other lock held, no srcu. In future if it will be called
              * directly from a vCPU thread (e.g. on hypercall for an IPI)
              * then it may need to switch to using a leaf-node mutex for
              * serializing the shared_info mapping.
              */
             mutex_lock(&kvm->lock);
      
      In commit 2fd6df2f ("KVM: x86/xen: intercept EVTCHNOP_send from guests")
      the other version of me ran straight past that comment without reading it,
      and introduced a potential deadlock by taking vcpu->mutex and kvm->lock
      in the wrong order.
      
      Solve this as originally suggested, by adding a leaf-node lock in the Xen
      state rather than using kvm->lock for it.
      
      Fixes: 2fd6df2f ("KVM: x86/xen: intercept EVTCHNOP_send from guests")
      Signed-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
      Message-Id: <20230111180651.14394-4-dwmw2@infradead.org>
      [Rebase, add docs. - Paolo]
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      310bc395