- Fix MSI-X error handling on older kernels (#519787)

This commit is contained in:
Mark McLoughlin 2009-09-07 07:02:08 +00:00
parent ee62648630
commit dc5736caa0
2 changed files with 56 additions and 1 deletions

View File

@ -0,0 +1,48 @@
From 057fb1b4b227bc49aa00b08da5f177b50c020693 Mon Sep 17 00:00:00 2001
From: Michael S. Tsirkin <mst@redhat.com>
Date: Thu, 23 Jul 2009 16:34:13 +0300
Subject: [PATCH] Fix error handling in msix vector add
When adding a vector fails, the used counter should
not be incremented, otherwise on vector change we will
try to update the routing entry.
(cherry picked from commit aca6915d92743b11ac5555d6e412cc4737f27f34)
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Fedora-patch: qemu-fix-msix-error-handling-on-older-kernels.patch
---
hw/msix.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/hw/msix.c b/hw/msix.c
index 974268d..b6c3f17 100644
--- a/hw/msix.c
+++ b/hw/msix.c
@@ -503,13 +503,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

View File

@ -4,7 +4,7 @@
Summary: QEMU is a FAST! processor emulator
Name: qemu
Version: 0.10.91
Release: 0.9.%{kvmvertag}%{?dist}
Release: 0.10.%{kvmvertag}%{?dist}
# Epoch because we pushed a qemu-1.0 package
Epoch: 2
License: GPLv2+ and LGPLv2+ and BSD
@ -40,6 +40,9 @@ Patch07: qemu-fix-no-kvm-segfault.patch
# Allow the pulseudio backend to be the default
Patch08: qemu-allow-pulseaudio-to-be-the-default.patch
# Fix MSI-X error handling on older kernels (#519787)
Patch09: qemu-fix-msix-error-handling-on-older-kernels.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: SDL-devel zlib-devel which texi2html gnutls-devel cyrus-sasl-devel
BuildRequires: rsync dev86 iasl
@ -228,6 +231,7 @@ such as kvmtrace and kvm_stat.
%patch06 -p1
%patch07 -p1
%patch08 -p1
%patch09 -p1
%build
# systems like rhel build system does not have a recent enough linker so
@ -492,6 +496,9 @@ getent passwd qemu >/dev/null || \
%{_mandir}/man1/qemu-img.1*
%changelog
* Mon Sep 7 2009 Mark McLoughlin <markmc@redhat.com> - 2:0.10.91-0.10.rc1
- Fix MSI-X error handling on older kernels (#519787)
* Fri Sep 4 2009 Mark McLoughlin <markmc@redhat.com> - 2:0.10.91-0.9.rc1
- Make pulseaudio the default audio backend (#519540, #495964, #496627)