On Mon, 2012-03-19 at 10:56 +0100, Jan Kiszka wrote: > If the host or the device does not support INTx sharing, retry the IRQ > assignment with host-side MSI support enabled but warn about potential > consequences. This allows to preserve the previous behavior where we > defaulted to MSI and did not support INTx sharing at all. > > Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> > --- > > Detecting if the user actually specified prefer_msi=off as property of > pci-assign is non-trivial. So I decided to go for the retry approach, > ignoring potential user requests. The warning should attract the > attention. > > hw/device-assignment.c | 12 ++++++++++++ > 1 files changed, 12 insertions(+), 0 deletions(-) > > diff --git a/hw/device-assignment.c b/hw/device-assignment.c > index 89823f1..c953713 100644 > --- a/hw/device-assignment.c > +++ b/hw/device-assignment.c > @@ -835,6 +835,7 @@ static int assign_irq(AssignedDevice *dev) > dev->irq_requested_type = 0; > } > > +retry: > assigned_irq_data.flags = KVM_DEV_IRQ_GUEST_INTX; > if (dev->features & ASSIGNED_DEVICE_PREFER_MSI_MASK && > dev->cap.available & ASSIGNED_DEVICE_CAP_MSI) > @@ -844,6 +845,17 @@ static int assign_irq(AssignedDevice *dev) > > r = kvm_assign_irq(kvm_state, &assigned_irq_data); > if (r < 0) { > + if (r == -EIO && !(dev->features & ASSIGNED_DEVICE_PREFER_MSI_MASK) && > + dev->cap.available & ASSIGNED_DEVICE_CAP_MSI) { > + /* Retry with host-side MSI. There might be an IRQ conflict and > + * either the kernel or the device doesn't support sharing. */ > + fprintf(stderr, > + "Host-side INTx sharing not supported, " > + "using MSI instead.\n" > + "Some devices do not to work properly in this mode.\n"); > + dev->features |= ASSIGNED_DEVICE_PREFER_MSI_MASK; > + goto retry; > + } > fprintf(stderr, "Failed to assign irq for \"%s\": %s\n", > dev->dev.qdev.id, strerror(-r)); > fprintf(stderr, "Perhaps you are assigning a device " Acked-by: Alex Williamson <alex.williamson@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html