[PATCH 2/9] msix: make kvm specific initialization a function

Avi Kivity
2010-09-20T15:06:52Z

Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/msix.c | 19 +++++++++++++------
1 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/hw/msix.c b/hw/msix.c
index 312439a..2e2ce5a 100644
--- a/hw/msix.c
+++ b/hw/msix.c
@@ -48,6 +48,17 @@ int msix_supported;

#ifdef CONFIG_KVM
/* KVM specific MSIX helpers */
+
+static void kvm_msix_init(PCIDevice *dev)
+{
+#ifdef KVM_CAP_IRQCHIP
+ if (kvm_enabled() && kvm_irqchip_in_kernel()) {
+ dev->msix_irq_entries = qemu_malloc(dev->msix_entries_nr *
+ sizeof *dev->msix_irq_entries);
+ }
+#endif
+}
+
static void kvm_msix_free(PCIDevice *dev)
{
int vector, changed = 0;
@@ -150,6 +161,7 @@ static void kvm_msix_del(PCIDevice *dev, unsigned vector)
}
#else

+static void kvm_msix_init(PCIDevice *dev) {}
static void kvm_msix_free(PCIDevice *dev) {}
static void kvm_msix_update(PCIDevice *dev, int vector,
int was_masked, int is_masked) {}
@@ -394,12 +406,7 @@ int msix_init(struct PCIDevice *dev, unsigned short nentries,
if (ret)
goto err_config;

-#ifdef KVM_CAP_IRQCHIP
- if (kvm_enabled() && kvm_irqchip_in_kernel()) {
- dev->msix_irq_entries = qemu_malloc(nentries *
- sizeof *dev->msix_irq_entries);
- }
-#endif
+ kvm_msix_init(dev);

dev->cap_present |= QEMU_PCI_CAP_MSIX;
return 0;
--
1.7.2.3