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);
}
--
2.38.1
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);
>>> }
>>
>
© 2016 - 2026 Red Hat, Inc.