Han, Weidong wrote:
Avi Kivity wrote:
+static void kvm_pci_pt_work_fn(struct work_struct *work) +{
+       struct kvm_pci_pt_dev_list *match;
+       struct kvm_pci_pt_work *int_work;
+       int source;
+       unsigned long flags;
+       int guest_irq;
+       int host_irq;
+
+       int_work = container_of(work, struct kvm_pci_pt_work, work); +
+       source = int_work->source ? KVM_PT_SOURCE_IRQ_ACK :
KVM_PT_SOURCE_IRQ; + +  /* This is taken to safely inject irq
inside
the guest. When +        * the interrupt injection (or the ioapic code)
uses a +         * finer-grained lock, update this
+        */
+       mutex_lock(&int_work->kvm->lock);
+       read_lock_irqsave(&kvm_pci_pt_lock, flags);
+       match =
kvm_find_pci_pt_dev(&int_work->kvm->arch.pci_pt_dev_head,
NULL, +                             int_work->irq, source);
+       if (!match) {
+               printk(KERN_ERR "%s: no matching device assigned to
guest "
+                      "found for irq %d, source = %d!\n",
+                      __func__, int_work->irq, int_work->source);
+               read_unlock_irqrestore(&kvm_pci_pt_lock, flags); +
goto out;
+       }
+       guest_irq = match->pt_dev.guest.irq;
+       host_irq = match->pt_dev.host.irq;
+       read_unlock_irqrestore(&kvm_pci_pt_lock, flags);
+
+       if (source == KVM_PT_SOURCE_IRQ)
+               kvm_set_irq(int_work->kvm, guest_irq, 1);
+       else {
+               kvm_set_irq(int_work->kvm, int_work->irq, 0);
+               enable_irq(host_irq);
+       }
+out:
+       mutex_unlock(&int_work->kvm->lock);
+       kvm_put_kvm(int_work->kvm);
+}

+
+/* FIXME: Implement the OR logic needed to make shared interrupts
on + * this line behave properly + */

Isn't this a showstopper?  There is no easy way for a user to avoid
sharing, especially as we have only three pci irqs at present.


Currently it's not easy to avoid sharing. I think we can support MSI for
assgined device to solve sharing problem.

MSI is definitely the right direction, but we also need to support the OR logic for guests that do not support MSI.

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to