Message ID | 146912266605.14450.16219526000301775326.stgit@bahia.lan (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 07/21/2016 08:43 PM, Greg Kurz wrote: > From: Greg Kurz <gkurz@linux.vnet.ibm.com> > > Without presuming if we got there because of a user mistake or some > more subtle bug in the tooling, it really does not make sense to > implement a non-functional device. > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > Signed-off-by: Greg Kurz <groug@kaod.org> > --- > v3: - rebased on top of: > https://lists.gnu.org/archive/html/qemu-devel/2016-07/msg04744.html > - use virtio_pci_legacy/modern helpers > - rephrased error message to be shorter and use the on/off logic > > Marcel, this still results in > 80 char line in the code but I'd rather not > split it to ease grepping, nor shorten the message even more to keep it > meaningful. > --- > hw/virtio/virtio-pci.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c > index 755f9218b77d..1f5f00a50a0b 100644 > --- a/hw/virtio/virtio-pci.c > +++ b/hw/virtio/virtio-pci.c > @@ -1842,6 +1842,11 @@ static void virtio_pci_dc_realize(DeviceState *qdev, Error **errp) > VirtIOPCIProxy *proxy = VIRTIO_PCI(qdev); > PCIDevice *pci_dev = &proxy->pci_dev; > > + if (!(virtio_pci_modern(proxy) || virtio_pci_legacy(proxy))) { Hi Greg, Thanks for rebasing it. A minor thing, disable-legacy is now auto/on/off. If the user sets [disable-legacy=auto, disable-modern=on] will not pass this test, but is possible that later on will be enabled: See virtio_pci_realize: if (proxy->disable_legacy == ON_OFF_AUTO_AUTO) { proxy->disable_legacy = pcie_port ? ON_OFF_AUTO_ON : ON_OFF_AUTO_OFF; } On the the other hand, if the user sets disable-modern=on, is reasonable to ask him to set disable-legacy to off. Reviewed-by: Marcel Apfelbaum <marcel@redhat.com> Thanks, Marcel > + error_setg(errp, "device cannot work when both disable-modern and disable-legacy are set to on."); > + return; > + } > + > if (!(proxy->flags & VIRTIO_PCI_FLAG_DISABLE_PCIE) && > virtio_pci_modern(proxy)) { > pci_dev->cap_present |= QEMU_PCI_CAP_EXPRESS; >
On 07/21/2016 11:43 AM, Greg Kurz wrote: > From: Greg Kurz <gkurz@linux.vnet.ibm.com> > > Without presuming if we got there because of a user mistake or some > more subtle bug in the tooling, it really does not make sense to > implement a non-functional device. > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > Signed-off-by: Greg Kurz <groug@kaod.org> > --- > v3: - rebased on top of: > https://lists.gnu.org/archive/html/qemu-devel/2016-07/msg04744.html > - use virtio_pci_legacy/modern helpers > - rephrased error message to be shorter and use the on/off logic > > Marcel, this still results in > 80 char line in the code but I'd rather not > split it to ease grepping, nor shorten the message even more to keep it > meaningful. > --- > hw/virtio/virtio-pci.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c > index 755f9218b77d..1f5f00a50a0b 100644 > --- a/hw/virtio/virtio-pci.c > +++ b/hw/virtio/virtio-pci.c > @@ -1842,6 +1842,11 @@ static void virtio_pci_dc_realize(DeviceState *qdev, Error **errp) > VirtIOPCIProxy *proxy = VIRTIO_PCI(qdev); > PCIDevice *pci_dev = &proxy->pci_dev; > > + if (!(virtio_pci_modern(proxy) || virtio_pci_legacy(proxy))) { > + error_setg(errp, "device cannot work when both disable-modern and disable-legacy are set to on."); The phrase passed to error_setg() should not end in '.' You can also split the string literal, to keep the line length of the source under 80 (the long error message is less problematic).
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 755f9218b77d..1f5f00a50a0b 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1842,6 +1842,11 @@ static void virtio_pci_dc_realize(DeviceState *qdev, Error **errp) VirtIOPCIProxy *proxy = VIRTIO_PCI(qdev); PCIDevice *pci_dev = &proxy->pci_dev; + if (!(virtio_pci_modern(proxy) || virtio_pci_legacy(proxy))) { + error_setg(errp, "device cannot work when both disable-modern and disable-legacy are set to on."); + return; + } + if (!(proxy->flags & VIRTIO_PCI_FLAG_DISABLE_PCIE) && virtio_pci_modern(proxy)) { pci_dev->cap_present |= QEMU_PCI_CAP_EXPRESS;