diff mbox

qemu-kvm: fix error handling in msix vector add

Message ID 20090723133413.GA12944@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Michael S. Tsirkin July 23, 2009, 1:34 p.m. UTC
When adding a vector fails, the used counter should
not be incremented, otherwise on vector change we will
try to update the routing entry.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/msix.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

Comments

Marcelo Tosatti July 25, 2009, 3:30 p.m. UTC | #1
On Thu, Jul 23, 2009 at 04:34:13PM +0300, Michael S. Tsirkin wrote:
> When adding a vector fails, the used counter should
> not be incremented, otherwise on vector change we will
> try to update the routing entry.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

Applied, thanks.

> ---
>  hw/msix.c |   10 ++++++++--
>  1 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/msix.c b/hw/msix.c
> index 5f77dc9..47cbdc7 100644
> --- a/hw/msix.c
> +++ b/hw/msix.c
> @@ -502,13 +502,19 @@ void msix_reset(PCIDevice *dev)
>  /* Mark vector as used. */
>  int msix_vector_use(PCIDevice *dev, unsigned vector)
>  {
> +    int ret;
>      if (vector >= dev->msix_entries_nr)
>          return -EINVAL;
> -    if (dev->msix_entry_used[vector]++)
> +    if (dev->msix_entry_used[vector]) {
>          return 0;
> +    }
>      if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) {
> -        return kvm_msix_add(dev, vector);
> +        ret = kvm_msix_add(dev, vector);
> +        if (ret) {
> +            return ret;
> +        }
>      }
> +    ++dev->msix_entry_used[vector];
>      return 0;
>  }
>  
> -- 
> 1.6.2.5
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michael S. Tsirkin July 28, 2009, 1:22 p.m. UTC | #2
On Sat, Jul 25, 2009 at 12:30:52PM -0300, Marcelo Tosatti wrote:
> On Thu, Jul 23, 2009 at 04:34:13PM +0300, Michael S. Tsirkin wrote:
> > When adding a vector fails, the used counter should
> > not be incremented, otherwise on vector change we will
> > try to update the routing entry.
> > 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> 
> Applied, thanks.

Should I see this in qemu-kvm master?
It does not seem to be there.

> > ---
> >  hw/msix.c |   10 ++++++++--
> >  1 files changed, 8 insertions(+), 2 deletions(-)
> > 
> > diff --git a/hw/msix.c b/hw/msix.c
> > index 5f77dc9..47cbdc7 100644
> > --- a/hw/msix.c
> > +++ b/hw/msix.c
> > @@ -502,13 +502,19 @@ void msix_reset(PCIDevice *dev)
> >  /* Mark vector as used. */
> >  int msix_vector_use(PCIDevice *dev, unsigned vector)
> >  {
> > +    int ret;
> >      if (vector >= dev->msix_entries_nr)
> >          return -EINVAL;
> > -    if (dev->msix_entry_used[vector]++)
> > +    if (dev->msix_entry_used[vector]) {
> >          return 0;
> > +    }
> >      if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) {
> > -        return kvm_msix_add(dev, vector);
> > +        ret = kvm_msix_add(dev, vector);
> > +        if (ret) {
> > +            return ret;
> > +        }
> >      }
> > +    ++dev->msix_entry_used[vector];
> >      return 0;
> >  }
> >  
> > -- 
> > 1.6.2.5
> > --
> > To unsubscribe from this list: send the line "unsubscribe kvm" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Marcelo Tosatti July 28, 2009, 1:31 p.m. UTC | #3
On Tue, Jul 28, 2009 at 04:22:36PM +0300, Michael S. Tsirkin wrote:
> On Sat, Jul 25, 2009 at 12:30:52PM -0300, Marcelo Tosatti wrote:
> > On Thu, Jul 23, 2009 at 04:34:13PM +0300, Michael S. Tsirkin wrote:
> > > When adding a vector fails, the used counter should
> > > not be incremented, otherwise on vector change we will
> > > try to update the routing entry.
> > > 
> > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > 
> > Applied, thanks.
> 
> Should I see this in qemu-kvm master?
> It does not seem to be there.

Hum, forgot to push. Will handle it. Sorry for the mess.

> 
> > > ---
> > >  hw/msix.c |   10 ++++++++--
> > >  1 files changed, 8 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/hw/msix.c b/hw/msix.c
> > > index 5f77dc9..47cbdc7 100644
> > > --- a/hw/msix.c
> > > +++ b/hw/msix.c
> > > @@ -502,13 +502,19 @@ void msix_reset(PCIDevice *dev)
> > >  /* Mark vector as used. */
> > >  int msix_vector_use(PCIDevice *dev, unsigned vector)
> > >  {
> > > +    int ret;
> > >      if (vector >= dev->msix_entries_nr)
> > >          return -EINVAL;
> > > -    if (dev->msix_entry_used[vector]++)
> > > +    if (dev->msix_entry_used[vector]) {
> > >          return 0;
> > > +    }
> > >      if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) {
> > > -        return kvm_msix_add(dev, vector);
> > > +        ret = kvm_msix_add(dev, vector);
> > > +        if (ret) {
> > > +            return ret;
> > > +        }
> > >      }
> > > +    ++dev->msix_entry_used[vector];
> > >      return 0;
> > >  }
> > >  
> > > -- 
> > > 1.6.2.5
> > > --
> > > To unsubscribe from this list: send the line "unsubscribe kvm" in
> > > the body of a message to majordomo@vger.kernel.org
> > > More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mark McLoughlin Sept. 7, 2009, 7:05 a.m. UTC | #4
On Sat, 2009-07-25 at 12:30 -0300, Marcelo Tosatti wrote:
> On Thu, Jul 23, 2009 at 04:34:13PM +0300, Michael S. Tsirkin wrote:
> > When adding a vector fails, the used counter should
> > not be incremented, otherwise on vector change we will
> > try to update the routing entry.
> > 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> 
> Applied, thanks.

We need this on stable-0.11 too. See:

  https://bugzilla.redhat.com/519787

Thanks,
Mark.

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Avi Kivity Sept. 9, 2009, 12:08 p.m. UTC | #5
On 09/07/2009 10:05 AM, Mark McLoughlin wrote:
> On Sat, 2009-07-25 at 12:30 -0300, Marcelo Tosatti wrote:
>    
>> On Thu, Jul 23, 2009 at 04:34:13PM +0300, Michael S. Tsirkin wrote:
>>      
>>> When adding a vector fails, the used counter should
>>> not be incremented, otherwise on vector change we will
>>> try to update the routing entry.
>>>
>>> Signed-off-by: Michael S. Tsirkin<mst@redhat.com>
>>>        
>> Applied, thanks.
>>      
> We need this on stable-0.11 too. See:
>
>    https://bugzilla.redhat.com/519787
>
>    

Added there, thanks.
diff mbox

Patch

diff --git a/hw/msix.c b/hw/msix.c
index 5f77dc9..47cbdc7 100644
--- a/hw/msix.c
+++ b/hw/msix.c
@@ -502,13 +502,19 @@  void msix_reset(PCIDevice *dev)
 /* Mark vector as used. */
 int msix_vector_use(PCIDevice *dev, unsigned vector)
 {
+    int ret;
     if (vector >= dev->msix_entries_nr)
         return -EINVAL;
-    if (dev->msix_entry_used[vector]++)
+    if (dev->msix_entry_used[vector]) {
         return 0;
+    }
     if (kvm_enabled() && qemu_kvm_irqchip_in_kernel()) {
-        return kvm_msix_add(dev, vector);
+        ret = kvm_msix_add(dev, vector);
+        if (ret) {
+            return ret;
+        }
     }
+    ++dev->msix_entry_used[vector];
     return 0;
 }