Message ID | 20230719141733.35818-1-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | [for-8.1] hw/usb/hcd-xhci-pci: Fail if user requested MSIX but it can't be used | expand |
Ping? On 19/7/23 16:17, Philippe Mathieu-Daudé wrote: > Do not silently ignore the user request of using MSIX. > Remove the TODO. Coverity reported this as CID 1508725. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > hw/usb/hcd-xhci-pci.c | 21 ++++++++++++++++----- > 1 file changed, 16 insertions(+), 5 deletions(-) > > diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c > index 643d4643e4..416656b78c 100644 > --- a/hw/usb/hcd-xhci-pci.c > +++ b/hw/usb/hcd-xhci-pci.c > @@ -155,11 +155,22 @@ static void usb_xhci_pci_realize(struct PCIDevice *dev, Error **errp) > } > > if (s->msix != ON_OFF_AUTO_OFF) { > - /* TODO check for errors, and should fail when msix=on */ > - msix_init(dev, s->xhci.numintrs, > - &s->xhci.mem, 0, OFF_MSIX_TABLE, > - &s->xhci.mem, 0, OFF_MSIX_PBA, > - 0x90, NULL); > + ret = msix_init(dev, s->xhci.numintrs, > + &s->xhci.mem, 0, OFF_MSIX_TABLE, > + &s->xhci.mem, 0, OFF_MSIX_PBA, > + 0x90, &err); > + if (ret < 0) { > + if (s->msi == ON_OFF_AUTO_ON) { > + /* Can't satisfy user's explicit msi=on request, fail */ > + error_append_hint(&err, "You might have to use msi=auto" > + " (default) or msi=off with this" > + " machine type.\n"); > + error_propagate(errp, err); > + return; > + } > + /* report that msix is not supported, but do not error out */ > + warn_report_err(err); > + } > } > s->xhci.as = pci_get_address_space(dev); > }
kind ping? On 25/8/23 10:02, Philippe Mathieu-Daudé wrote: > Ping? > > On 19/7/23 16:17, Philippe Mathieu-Daudé wrote: >> Do not silently ignore the user request of using MSIX. >> Remove the TODO. Coverity reported this as CID 1508725. >> >> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >> --- >> hw/usb/hcd-xhci-pci.c | 21 ++++++++++++++++----- >> 1 file changed, 16 insertions(+), 5 deletions(-) >> >> diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c >> index 643d4643e4..416656b78c 100644 >> --- a/hw/usb/hcd-xhci-pci.c >> +++ b/hw/usb/hcd-xhci-pci.c >> @@ -155,11 +155,22 @@ static void usb_xhci_pci_realize(struct >> PCIDevice *dev, Error **errp) >> } >> if (s->msix != ON_OFF_AUTO_OFF) { >> - /* TODO check for errors, and should fail when msix=on */ >> - msix_init(dev, s->xhci.numintrs, >> - &s->xhci.mem, 0, OFF_MSIX_TABLE, >> - &s->xhci.mem, 0, OFF_MSIX_PBA, >> - 0x90, NULL); >> + ret = msix_init(dev, s->xhci.numintrs, >> + &s->xhci.mem, 0, OFF_MSIX_TABLE, >> + &s->xhci.mem, 0, OFF_MSIX_PBA, >> + 0x90, &err); >> + if (ret < 0) { >> + if (s->msi == ON_OFF_AUTO_ON) { >> + /* Can't satisfy user's explicit msi=on request, fail */ >> + error_append_hint(&err, "You might have to use msi=auto" >> + " (default) or msi=off with >> this" >> + " machine type.\n"); >> + error_propagate(errp, err); >> + return; >> + } >> + /* report that msix is not supported, but do not error >> out */ >> + warn_report_err(err); >> + } >> } >> s->xhci.as = pci_get_address_space(dev); >> } >
Cc'ing Markus and Marc-André On 31/8/23 10:22, Philippe Mathieu-Daudé wrote: > kind ping? > > On 25/8/23 10:02, Philippe Mathieu-Daudé wrote: >> Ping? >> >> On 19/7/23 16:17, Philippe Mathieu-Daudé wrote: >>> Do not silently ignore the user request of using MSIX. >>> Remove the TODO. Coverity reported this as CID 1508725. >>> >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >>> --- >>> hw/usb/hcd-xhci-pci.c | 21 ++++++++++++++++----- >>> 1 file changed, 16 insertions(+), 5 deletions(-) >>> >>> diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c >>> index 643d4643e4..416656b78c 100644 >>> --- a/hw/usb/hcd-xhci-pci.c >>> +++ b/hw/usb/hcd-xhci-pci.c >>> @@ -155,11 +155,22 @@ static void usb_xhci_pci_realize(struct >>> PCIDevice *dev, Error **errp) >>> } >>> if (s->msix != ON_OFF_AUTO_OFF) { >>> - /* TODO check for errors, and should fail when msix=on */ >>> - msix_init(dev, s->xhci.numintrs, >>> - &s->xhci.mem, 0, OFF_MSIX_TABLE, >>> - &s->xhci.mem, 0, OFF_MSIX_PBA, >>> - 0x90, NULL); >>> + ret = msix_init(dev, s->xhci.numintrs, >>> + &s->xhci.mem, 0, OFF_MSIX_TABLE, >>> + &s->xhci.mem, 0, OFF_MSIX_PBA, >>> + 0x90, &err); >>> + if (ret < 0) { >>> + if (s->msi == ON_OFF_AUTO_ON) { >>> + /* Can't satisfy user's explicit msi=on request, >>> fail */ >>> + error_append_hint(&err, "You might have to use >>> msi=auto" >>> + " (default) or msi=off with >>> this" >>> + " machine type.\n"); >>> + error_propagate(errp, err); >>> + return; >>> + } >>> + /* report that msix is not supported, but do not error >>> out */ >>> + warn_report_err(err); >>> + } >>> } >>> s->xhci.as = pci_get_address_space(dev); >>> } >> >
diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c index 643d4643e4..416656b78c 100644 --- a/hw/usb/hcd-xhci-pci.c +++ b/hw/usb/hcd-xhci-pci.c @@ -155,11 +155,22 @@ static void usb_xhci_pci_realize(struct PCIDevice *dev, Error **errp) } if (s->msix != ON_OFF_AUTO_OFF) { - /* TODO check for errors, and should fail when msix=on */ - msix_init(dev, s->xhci.numintrs, - &s->xhci.mem, 0, OFF_MSIX_TABLE, - &s->xhci.mem, 0, OFF_MSIX_PBA, - 0x90, NULL); + ret = msix_init(dev, s->xhci.numintrs, + &s->xhci.mem, 0, OFF_MSIX_TABLE, + &s->xhci.mem, 0, OFF_MSIX_PBA, + 0x90, &err); + if (ret < 0) { + if (s->msi == ON_OFF_AUTO_ON) { + /* Can't satisfy user's explicit msi=on request, fail */ + error_append_hint(&err, "You might have to use msi=auto" + " (default) or msi=off with this" + " machine type.\n"); + error_propagate(errp, err); + return; + } + /* report that msix is not supported, but do not error out */ + warn_report_err(err); + } } s->xhci.as = pci_get_address_space(dev); }
Do not silently ignore the user request of using MSIX. Remove the TODO. Coverity reported this as CID 1508725. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/usb/hcd-xhci-pci.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-)