All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Avi Kivity <avi@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	kvm@vger.kernel.org, Alex Williamson <alex.williamson@redhat.com>,
	qemu-devel@nongnu.org
Subject: Re: [RFC][PATCH 28/45] qemu-kvm: msix: Drop tracking of used vectors
Date: Mon, 17 Oct 2011 17:48:53 +0200	[thread overview]
Message-ID: <20111017154852.GC7876@redhat.com> (raw)
In-Reply-To: <ee9ba574e6ccc27d33585d09f0bd66c1b6051379.1318843693.git.jan.kiszka@siemens.com>

On Mon, Oct 17, 2011 at 11:28:02AM +0200, Jan Kiszka wrote:
> This optimization was only required to keep KVM route usage low. Now
> that we solve that problem via lazy updates, we can drop the field. We
> still need interfaces to clear pending vectors, though (and we have to
> make use of them more broadly - but that's unrelated to this patch).
> 
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

Lazy updates should be an implementation detail.
IMO resource tracking of vectors makes sense
as an API. Making devices deal with pending
vectors as a concept, IMO, does not.

> ---
>  hw/ivshmem.c    |   16 ++-----------
>  hw/msix.c       |   62 +++++++++++-------------------------------------------
>  hw/msix.h       |    5 +--
>  hw/pci.h        |    2 -
>  hw/virtio-pci.c |   20 +++++++----------
>  5 files changed, 26 insertions(+), 79 deletions(-)
> 
> diff --git a/hw/ivshmem.c b/hw/ivshmem.c
> index 242fbea..a402c98 100644
> --- a/hw/ivshmem.c
> +++ b/hw/ivshmem.c
> @@ -535,10 +535,8 @@ static uint64_t ivshmem_get_size(IVShmemState * s) {
>      return value;
>  }
>  
> -static void ivshmem_setup_msi(IVShmemState * s) {
> -
> -    int i;
> -
> +static void ivshmem_setup_msi(IVShmemState *s)
> +{
>      /* allocate the MSI-X vectors */
>  
>      memory_region_init(&s->msix_bar, "ivshmem-msix", 4096);
> @@ -551,11 +549,6 @@ static void ivshmem_setup_msi(IVShmemState * s) {
>          exit(1);
>      }
>  
> -    /* 'activate' the vectors */
> -    for (i = 0; i < s->vectors; i++) {
> -        msix_vector_use(&s->dev, i);
> -    }
> -
>      /* allocate Qemu char devices for receiving interrupts */
>      s->eventfd_table = g_malloc0(s->vectors * sizeof(EventfdEntry));
>  }
> @@ -581,7 +574,7 @@ static int ivshmem_load(QEMUFile* f, void *opaque, int version_id)
>      IVSHMEM_DPRINTF("ivshmem_load\n");
>  
>      IVShmemState *proxy = opaque;
> -    int ret, i;
> +    int ret;
>  
>      if (version_id > 0) {
>          return -EINVAL;
> @@ -599,9 +592,6 @@ static int ivshmem_load(QEMUFile* f, void *opaque, int version_id)
>  
>      if (ivshmem_has_feature(proxy, IVSHMEM_MSI)) {
>          msix_load(&proxy->dev, f);
> -        for (i = 0; i < proxy->vectors; i++) {
> -            msix_vector_use(&proxy->dev, i);
> -        }
>      } else {
>          proxy->intrstatus = qemu_get_be32(f);
>          proxy->intrmask = qemu_get_be32(f);
> diff --git a/hw/msix.c b/hw/msix.c
> index ce3375a..f1b97b5 100644
> --- a/hw/msix.c
> +++ b/hw/msix.c
> @@ -292,9 +292,6 @@ int msix_init(struct PCIDevice *dev, unsigned short nentries,
>      if (nentries > MSIX_MAX_ENTRIES)
>          return -EINVAL;
>  
> -    dev->msix_entry_used = g_malloc0(MSIX_MAX_ENTRIES *
> -                                        sizeof *dev->msix_entry_used);
> -
>      dev->msix_table_page = g_malloc0(MSIX_PAGE_SIZE);
>      msix_mask_all(dev, nentries);
>  
> @@ -317,21 +314,9 @@ err_config:
>      memory_region_destroy(&dev->msix_mmio);
>      g_free(dev->msix_table_page);
>      dev->msix_table_page = NULL;
> -    g_free(dev->msix_entry_used);
> -    dev->msix_entry_used = NULL;
>      return ret;
>  }
>  
> -static void msix_free_irq_entries(PCIDevice *dev)
> -{
> -    int vector;
> -
> -    for (vector = 0; vector < dev->msix_entries_nr; ++vector) {
> -        dev->msix_entry_used[vector] = 0;
> -        msix_clr_pending(dev, vector);
> -    }
> -}
> -
>  /* Clean up resources for the device. */
>  int msix_uninit(PCIDevice *dev, MemoryRegion *bar)
>  {
> @@ -340,14 +325,11 @@ int msix_uninit(PCIDevice *dev, MemoryRegion *bar)
>      }
>      pci_del_capability(dev, PCI_CAP_ID_MSIX, MSIX_CAP_LENGTH);
>      dev->msix_cap = 0;
> -    msix_free_irq_entries(dev);
>      dev->msix_entries_nr = 0;
>      memory_region_del_subregion(bar, &dev->msix_mmio);
>      memory_region_destroy(&dev->msix_mmio);
>      g_free(dev->msix_table_page);
>      dev->msix_table_page = NULL;
> -    g_free(dev->msix_entry_used);
> -    dev->msix_entry_used = NULL;
>  
>      kvm_msix_free(dev);
>      g_free(dev->msix_cache);
> @@ -376,7 +358,6 @@ void msix_load(PCIDevice *dev, QEMUFile *f)
>          return;
>      }
>  
> -    msix_free_irq_entries(dev);
>      qemu_get_buffer(f, dev->msix_table_page, n * PCI_MSIX_ENTRY_SIZE);
>      qemu_get_buffer(f, dev->msix_table_page + MSIX_PAGE_PENDING, (n + 7) / 8);
>  }
> @@ -407,7 +388,7 @@ void msix_notify(PCIDevice *dev, unsigned vector)
>  {
>      MSIMessage msg;
>  
> -    if (vector >= dev->msix_entries_nr || !dev->msix_entry_used[vector])
> +    if (vector >= dev->msix_entries_nr)
>          return;
>      if (msix_is_masked(dev, vector)) {
>          msix_set_pending(dev, vector);
> @@ -424,48 +405,31 @@ void msix_reset(PCIDevice *dev)
>      if (!msix_present(dev)) {
>          return;
>      }
> -    msix_free_irq_entries(dev);
> +    msix_clear_all_vectors(dev);
>      dev->config[dev->msix_cap + MSIX_CONTROL_OFFSET] &=
>  	    ~dev->wmask[dev->msix_cap + MSIX_CONTROL_OFFSET];
>      memset(dev->msix_table_page, 0, MSIX_PAGE_SIZE);
>      msix_mask_all(dev, dev->msix_entries_nr);
>  }
>  
> -/* PCI spec suggests that devices make it possible for software to configure
> - * less vectors than supported by the device, but does not specify a standard
> - * mechanism for devices to do so.
> - *
> - * We support this by asking devices to declare vectors software is going to
> - * actually use, and checking this on the notification path. Devices that
> - * don't want to follow the spec suggestion can declare all vectors as used. */
> -
> -/* Mark vector as used. */
> -int msix_vector_use(PCIDevice *dev, unsigned vector)
> +/* Clear pending vector. */
> +void msix_clear_vector(PCIDevice *dev, unsigned vector)
>  {
> -    if (vector >= dev->msix_entries_nr)
> -        return -EINVAL;
> -    ++dev->msix_entry_used[vector];
> -    return 0;
> -}
> -
> -/* Mark vector as unused. */
> -void msix_vector_unuse(PCIDevice *dev, unsigned vector)
> -{
> -    if (vector >= dev->msix_entries_nr || !dev->msix_entry_used[vector]) {
> -        return;
> -    }
> -    if (--dev->msix_entry_used[vector]) {
> -        return;
> +    if (msix_present(dev) && vector < dev->msix_entries_nr) {
> +        msix_clr_pending(dev, vector);
>      }
> -    msix_clr_pending(dev, vector);
>  }
>  
> -void msix_unuse_all_vectors(PCIDevice *dev)
> +void msix_clear_all_vectors(PCIDevice *dev)
>  {
> +    unsigned int vector;
> +
>      if (!msix_present(dev)) {
>          return;
>      }
> -    msix_free_irq_entries(dev);
> +    for (vector = 0; vector < dev->msix_entries_nr; ++vector) {
> +        msix_clr_pending(dev, vector);
> +    }
>  }
>  
>  /* Invoke the notifier if vector entry is used and unmasked. */
> @@ -476,7 +440,7 @@ msix_notify_if_unmasked(PCIDevice *dev, unsigned int vector, bool masked)
>  
>      assert(dev->msix_vector_config_notifier);
>  
> -    if (!dev->msix_entry_used[vector] || msix_is_masked(dev, vector)) {
> +    if (msix_is_masked(dev, vector)) {
>          return 0;
>      }
>      msix_message_from_vector(dev, vector, &msg);
> diff --git a/hw/msix.h b/hw/msix.h
> index 978f417..9cd54cf 100644
> --- a/hw/msix.h
> +++ b/hw/msix.h
> @@ -21,9 +21,8 @@ int msix_present(PCIDevice *dev);
>  
>  uint32_t msix_bar_size(PCIDevice *dev);
>  
> -int msix_vector_use(PCIDevice *dev, unsigned vector);
> -void msix_vector_unuse(PCIDevice *dev, unsigned vector);
> -void msix_unuse_all_vectors(PCIDevice *dev);
> +void msix_clear_vector(PCIDevice *dev, unsigned vector);
> +void msix_clear_all_vectors(PCIDevice *dev);
>  
>  void msix_notify(PCIDevice *dev, unsigned vector);
>  
> diff --git a/hw/pci.h b/hw/pci.h
> index d7a652e..5cf9a16 100644
> --- a/hw/pci.h
> +++ b/hw/pci.h
> @@ -178,8 +178,6 @@ struct PCIDevice {
>      uint8_t *msix_table_page;
>      /* MMIO index used to map MSIX table and pending bit entries. */
>      MemoryRegion msix_mmio;
> -    /* Reference-count for entries actually in use by driver. */
> -    unsigned *msix_entry_used;
>      /* Region including the MSI-X table */
>      uint32_t msix_bar_size;
>      /* Version id needed for VMState */
> diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
> index 85d6771..5004d7d 100644
> --- a/hw/virtio-pci.c
> +++ b/hw/virtio-pci.c
> @@ -136,9 +136,6 @@ static int virtio_pci_load_config(void * opaque, QEMUFile *f)
>      } else {
>          proxy->vdev->config_vector = VIRTIO_NO_VECTOR;
>      }
> -    if (proxy->vdev->config_vector != VIRTIO_NO_VECTOR) {
> -        return msix_vector_use(&proxy->pci_dev, proxy->vdev->config_vector);
> -    }
>      return 0;
>  }
>  
> @@ -152,9 +149,6 @@ static int virtio_pci_load_queue(void * opaque, int n, QEMUFile *f)
>          vector = VIRTIO_NO_VECTOR;
>      }
>      virtio_queue_set_vector(proxy->vdev, n, vector);
> -    if (vector != VIRTIO_NO_VECTOR) {
> -        return msix_vector_use(&proxy->pci_dev, vector);
> -    }
>      return 0;
>  }
>  
> @@ -304,7 +298,7 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
>          if (pa == 0) {
>              virtio_pci_stop_ioeventfd(proxy);
>              virtio_reset(proxy->vdev);
> -            msix_unuse_all_vectors(&proxy->pci_dev);
> +            msix_clear_all_vectors(&proxy->pci_dev);
>          }
>          else
>              virtio_queue_set_addr(vdev, vdev->queue_sel, pa);
> @@ -331,7 +325,7 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
>  
>          if (vdev->status == 0) {
>              virtio_reset(proxy->vdev);
> -            msix_unuse_all_vectors(&proxy->pci_dev);
> +            msix_clear_all_vectors(&proxy->pci_dev);
>          }
>  
>          /* Linux before 2.6.34 sets the device as OK without enabling
> @@ -343,18 +337,20 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
>          }
>          break;
>      case VIRTIO_MSI_CONFIG_VECTOR:
> -        msix_vector_unuse(&proxy->pci_dev, vdev->config_vector);
> +        msix_clear_vector(&proxy->pci_dev, vdev->config_vector);
>          /* Make it possible for guest to discover an error took place. */
> -        if (msix_vector_use(&proxy->pci_dev, val) < 0)
> +        if (val >= vdev->nvectors) {
>              val = VIRTIO_NO_VECTOR;
> +        }
>          vdev->config_vector = val;
>          break;
>      case VIRTIO_MSI_QUEUE_VECTOR:
> -        msix_vector_unuse(&proxy->pci_dev,
> +        msix_clear_vector(&proxy->pci_dev,
>                            virtio_queue_vector(vdev, vdev->queue_sel));
>          /* Make it possible for guest to discover an error took place. */
> -        if (msix_vector_use(&proxy->pci_dev, val) < 0)
> +        if (val >= vdev->nvectors) {
>              val = VIRTIO_NO_VECTOR;
> +        }
>          virtio_queue_set_vector(vdev, vdev->queue_sel, val);
>          break;
>      default:
> -- 
> 1.7.3.4

WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	Avi Kivity <avi@redhat.com>,
	kvm@vger.kernel.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [RFC][PATCH 28/45] qemu-kvm: msix: Drop tracking of used vectors
Date: Mon, 17 Oct 2011 17:48:53 +0200	[thread overview]
Message-ID: <20111017154852.GC7876@redhat.com> (raw)
In-Reply-To: <ee9ba574e6ccc27d33585d09f0bd66c1b6051379.1318843693.git.jan.kiszka@siemens.com>

On Mon, Oct 17, 2011 at 11:28:02AM +0200, Jan Kiszka wrote:
> This optimization was only required to keep KVM route usage low. Now
> that we solve that problem via lazy updates, we can drop the field. We
> still need interfaces to clear pending vectors, though (and we have to
> make use of them more broadly - but that's unrelated to this patch).
> 
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

Lazy updates should be an implementation detail.
IMO resource tracking of vectors makes sense
as an API. Making devices deal with pending
vectors as a concept, IMO, does not.

> ---
>  hw/ivshmem.c    |   16 ++-----------
>  hw/msix.c       |   62 +++++++++++-------------------------------------------
>  hw/msix.h       |    5 +--
>  hw/pci.h        |    2 -
>  hw/virtio-pci.c |   20 +++++++----------
>  5 files changed, 26 insertions(+), 79 deletions(-)
> 
> diff --git a/hw/ivshmem.c b/hw/ivshmem.c
> index 242fbea..a402c98 100644
> --- a/hw/ivshmem.c
> +++ b/hw/ivshmem.c
> @@ -535,10 +535,8 @@ static uint64_t ivshmem_get_size(IVShmemState * s) {
>      return value;
>  }
>  
> -static void ivshmem_setup_msi(IVShmemState * s) {
> -
> -    int i;
> -
> +static void ivshmem_setup_msi(IVShmemState *s)
> +{
>      /* allocate the MSI-X vectors */
>  
>      memory_region_init(&s->msix_bar, "ivshmem-msix", 4096);
> @@ -551,11 +549,6 @@ static void ivshmem_setup_msi(IVShmemState * s) {
>          exit(1);
>      }
>  
> -    /* 'activate' the vectors */
> -    for (i = 0; i < s->vectors; i++) {
> -        msix_vector_use(&s->dev, i);
> -    }
> -
>      /* allocate Qemu char devices for receiving interrupts */
>      s->eventfd_table = g_malloc0(s->vectors * sizeof(EventfdEntry));
>  }
> @@ -581,7 +574,7 @@ static int ivshmem_load(QEMUFile* f, void *opaque, int version_id)
>      IVSHMEM_DPRINTF("ivshmem_load\n");
>  
>      IVShmemState *proxy = opaque;
> -    int ret, i;
> +    int ret;
>  
>      if (version_id > 0) {
>          return -EINVAL;
> @@ -599,9 +592,6 @@ static int ivshmem_load(QEMUFile* f, void *opaque, int version_id)
>  
>      if (ivshmem_has_feature(proxy, IVSHMEM_MSI)) {
>          msix_load(&proxy->dev, f);
> -        for (i = 0; i < proxy->vectors; i++) {
> -            msix_vector_use(&proxy->dev, i);
> -        }
>      } else {
>          proxy->intrstatus = qemu_get_be32(f);
>          proxy->intrmask = qemu_get_be32(f);
> diff --git a/hw/msix.c b/hw/msix.c
> index ce3375a..f1b97b5 100644
> --- a/hw/msix.c
> +++ b/hw/msix.c
> @@ -292,9 +292,6 @@ int msix_init(struct PCIDevice *dev, unsigned short nentries,
>      if (nentries > MSIX_MAX_ENTRIES)
>          return -EINVAL;
>  
> -    dev->msix_entry_used = g_malloc0(MSIX_MAX_ENTRIES *
> -                                        sizeof *dev->msix_entry_used);
> -
>      dev->msix_table_page = g_malloc0(MSIX_PAGE_SIZE);
>      msix_mask_all(dev, nentries);
>  
> @@ -317,21 +314,9 @@ err_config:
>      memory_region_destroy(&dev->msix_mmio);
>      g_free(dev->msix_table_page);
>      dev->msix_table_page = NULL;
> -    g_free(dev->msix_entry_used);
> -    dev->msix_entry_used = NULL;
>      return ret;
>  }
>  
> -static void msix_free_irq_entries(PCIDevice *dev)
> -{
> -    int vector;
> -
> -    for (vector = 0; vector < dev->msix_entries_nr; ++vector) {
> -        dev->msix_entry_used[vector] = 0;
> -        msix_clr_pending(dev, vector);
> -    }
> -}
> -
>  /* Clean up resources for the device. */
>  int msix_uninit(PCIDevice *dev, MemoryRegion *bar)
>  {
> @@ -340,14 +325,11 @@ int msix_uninit(PCIDevice *dev, MemoryRegion *bar)
>      }
>      pci_del_capability(dev, PCI_CAP_ID_MSIX, MSIX_CAP_LENGTH);
>      dev->msix_cap = 0;
> -    msix_free_irq_entries(dev);
>      dev->msix_entries_nr = 0;
>      memory_region_del_subregion(bar, &dev->msix_mmio);
>      memory_region_destroy(&dev->msix_mmio);
>      g_free(dev->msix_table_page);
>      dev->msix_table_page = NULL;
> -    g_free(dev->msix_entry_used);
> -    dev->msix_entry_used = NULL;
>  
>      kvm_msix_free(dev);
>      g_free(dev->msix_cache);
> @@ -376,7 +358,6 @@ void msix_load(PCIDevice *dev, QEMUFile *f)
>          return;
>      }
>  
> -    msix_free_irq_entries(dev);
>      qemu_get_buffer(f, dev->msix_table_page, n * PCI_MSIX_ENTRY_SIZE);
>      qemu_get_buffer(f, dev->msix_table_page + MSIX_PAGE_PENDING, (n + 7) / 8);
>  }
> @@ -407,7 +388,7 @@ void msix_notify(PCIDevice *dev, unsigned vector)
>  {
>      MSIMessage msg;
>  
> -    if (vector >= dev->msix_entries_nr || !dev->msix_entry_used[vector])
> +    if (vector >= dev->msix_entries_nr)
>          return;
>      if (msix_is_masked(dev, vector)) {
>          msix_set_pending(dev, vector);
> @@ -424,48 +405,31 @@ void msix_reset(PCIDevice *dev)
>      if (!msix_present(dev)) {
>          return;
>      }
> -    msix_free_irq_entries(dev);
> +    msix_clear_all_vectors(dev);
>      dev->config[dev->msix_cap + MSIX_CONTROL_OFFSET] &=
>  	    ~dev->wmask[dev->msix_cap + MSIX_CONTROL_OFFSET];
>      memset(dev->msix_table_page, 0, MSIX_PAGE_SIZE);
>      msix_mask_all(dev, dev->msix_entries_nr);
>  }
>  
> -/* PCI spec suggests that devices make it possible for software to configure
> - * less vectors than supported by the device, but does not specify a standard
> - * mechanism for devices to do so.
> - *
> - * We support this by asking devices to declare vectors software is going to
> - * actually use, and checking this on the notification path. Devices that
> - * don't want to follow the spec suggestion can declare all vectors as used. */
> -
> -/* Mark vector as used. */
> -int msix_vector_use(PCIDevice *dev, unsigned vector)
> +/* Clear pending vector. */
> +void msix_clear_vector(PCIDevice *dev, unsigned vector)
>  {
> -    if (vector >= dev->msix_entries_nr)
> -        return -EINVAL;
> -    ++dev->msix_entry_used[vector];
> -    return 0;
> -}
> -
> -/* Mark vector as unused. */
> -void msix_vector_unuse(PCIDevice *dev, unsigned vector)
> -{
> -    if (vector >= dev->msix_entries_nr || !dev->msix_entry_used[vector]) {
> -        return;
> -    }
> -    if (--dev->msix_entry_used[vector]) {
> -        return;
> +    if (msix_present(dev) && vector < dev->msix_entries_nr) {
> +        msix_clr_pending(dev, vector);
>      }
> -    msix_clr_pending(dev, vector);
>  }
>  
> -void msix_unuse_all_vectors(PCIDevice *dev)
> +void msix_clear_all_vectors(PCIDevice *dev)
>  {
> +    unsigned int vector;
> +
>      if (!msix_present(dev)) {
>          return;
>      }
> -    msix_free_irq_entries(dev);
> +    for (vector = 0; vector < dev->msix_entries_nr; ++vector) {
> +        msix_clr_pending(dev, vector);
> +    }
>  }
>  
>  /* Invoke the notifier if vector entry is used and unmasked. */
> @@ -476,7 +440,7 @@ msix_notify_if_unmasked(PCIDevice *dev, unsigned int vector, bool masked)
>  
>      assert(dev->msix_vector_config_notifier);
>  
> -    if (!dev->msix_entry_used[vector] || msix_is_masked(dev, vector)) {
> +    if (msix_is_masked(dev, vector)) {
>          return 0;
>      }
>      msix_message_from_vector(dev, vector, &msg);
> diff --git a/hw/msix.h b/hw/msix.h
> index 978f417..9cd54cf 100644
> --- a/hw/msix.h
> +++ b/hw/msix.h
> @@ -21,9 +21,8 @@ int msix_present(PCIDevice *dev);
>  
>  uint32_t msix_bar_size(PCIDevice *dev);
>  
> -int msix_vector_use(PCIDevice *dev, unsigned vector);
> -void msix_vector_unuse(PCIDevice *dev, unsigned vector);
> -void msix_unuse_all_vectors(PCIDevice *dev);
> +void msix_clear_vector(PCIDevice *dev, unsigned vector);
> +void msix_clear_all_vectors(PCIDevice *dev);
>  
>  void msix_notify(PCIDevice *dev, unsigned vector);
>  
> diff --git a/hw/pci.h b/hw/pci.h
> index d7a652e..5cf9a16 100644
> --- a/hw/pci.h
> +++ b/hw/pci.h
> @@ -178,8 +178,6 @@ struct PCIDevice {
>      uint8_t *msix_table_page;
>      /* MMIO index used to map MSIX table and pending bit entries. */
>      MemoryRegion msix_mmio;
> -    /* Reference-count for entries actually in use by driver. */
> -    unsigned *msix_entry_used;
>      /* Region including the MSI-X table */
>      uint32_t msix_bar_size;
>      /* Version id needed for VMState */
> diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
> index 85d6771..5004d7d 100644
> --- a/hw/virtio-pci.c
> +++ b/hw/virtio-pci.c
> @@ -136,9 +136,6 @@ static int virtio_pci_load_config(void * opaque, QEMUFile *f)
>      } else {
>          proxy->vdev->config_vector = VIRTIO_NO_VECTOR;
>      }
> -    if (proxy->vdev->config_vector != VIRTIO_NO_VECTOR) {
> -        return msix_vector_use(&proxy->pci_dev, proxy->vdev->config_vector);
> -    }
>      return 0;
>  }
>  
> @@ -152,9 +149,6 @@ static int virtio_pci_load_queue(void * opaque, int n, QEMUFile *f)
>          vector = VIRTIO_NO_VECTOR;
>      }
>      virtio_queue_set_vector(proxy->vdev, n, vector);
> -    if (vector != VIRTIO_NO_VECTOR) {
> -        return msix_vector_use(&proxy->pci_dev, vector);
> -    }
>      return 0;
>  }
>  
> @@ -304,7 +298,7 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
>          if (pa == 0) {
>              virtio_pci_stop_ioeventfd(proxy);
>              virtio_reset(proxy->vdev);
> -            msix_unuse_all_vectors(&proxy->pci_dev);
> +            msix_clear_all_vectors(&proxy->pci_dev);
>          }
>          else
>              virtio_queue_set_addr(vdev, vdev->queue_sel, pa);
> @@ -331,7 +325,7 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
>  
>          if (vdev->status == 0) {
>              virtio_reset(proxy->vdev);
> -            msix_unuse_all_vectors(&proxy->pci_dev);
> +            msix_clear_all_vectors(&proxy->pci_dev);
>          }
>  
>          /* Linux before 2.6.34 sets the device as OK without enabling
> @@ -343,18 +337,20 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
>          }
>          break;
>      case VIRTIO_MSI_CONFIG_VECTOR:
> -        msix_vector_unuse(&proxy->pci_dev, vdev->config_vector);
> +        msix_clear_vector(&proxy->pci_dev, vdev->config_vector);
>          /* Make it possible for guest to discover an error took place. */
> -        if (msix_vector_use(&proxy->pci_dev, val) < 0)
> +        if (val >= vdev->nvectors) {
>              val = VIRTIO_NO_VECTOR;
> +        }
>          vdev->config_vector = val;
>          break;
>      case VIRTIO_MSI_QUEUE_VECTOR:
> -        msix_vector_unuse(&proxy->pci_dev,
> +        msix_clear_vector(&proxy->pci_dev,
>                            virtio_queue_vector(vdev, vdev->queue_sel));
>          /* Make it possible for guest to discover an error took place. */
> -        if (msix_vector_use(&proxy->pci_dev, val) < 0)
> +        if (val >= vdev->nvectors) {
>              val = VIRTIO_NO_VECTOR;
> +        }
>          virtio_queue_set_vector(vdev, vdev->queue_sel, val);
>          break;
>      default:
> -- 
> 1.7.3.4

  reply	other threads:[~2011-10-17 15:47 UTC|newest]

Thread overview: 288+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-17  9:27 [RFC][PATCH 00/45] qemu-kvm: MSI layer rework for in-kernel irqchip support Jan Kiszka
2011-10-17  9:27 ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 01/45] msi: Guard msi/msix_write_config with msi_present Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 02/45] msi: Guard msi_reset " Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 03/45] msi: Use msi/msix_present more consistently Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 04/45] msi: Invoke msi/msix_reset from PCI core Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 05/45] msi: Invoke msi/msix_write_config " Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 06/45] msix: Prevent bogus mask updates on MMIO accesses Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17 11:10   ` Michael S. Tsirkin
2011-10-17 11:10     ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 11:23     ` Jan Kiszka
2011-10-17 11:23       ` [Qemu-devel] " Jan Kiszka
2011-10-17 11:57       ` Michael S. Tsirkin
2011-10-17 11:57         ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 12:07         ` Jan Kiszka
2011-10-17 12:07           ` [Qemu-devel] " Jan Kiszka
2011-10-17 12:50           ` Michael S. Tsirkin
2011-10-17 12:50             ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 19:11             ` Jan Kiszka
2011-10-17 19:11               ` [Qemu-devel] " Jan Kiszka
2011-10-17 19:43               ` Michael S. Tsirkin
2011-10-17 19:43                 ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17  9:27 ` [RFC][PATCH 07/45] msi: Generalize msix_supported to msi_supported Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 08/45] Introduce MSIMessage structure Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17 11:46   ` Michael S. Tsirkin
2011-10-17 11:46     ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 11:51     ` Jan Kiszka
2011-10-17 11:51       ` [Qemu-devel] " Jan Kiszka
2011-10-17 12:04       ` Michael S. Tsirkin
2011-10-17 12:04         ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 12:09         ` Jan Kiszka
2011-10-17 12:09           ` [Qemu-devel] " Jan Kiszka
2011-10-17 13:01           ` Michael S. Tsirkin
2011-10-17 13:01             ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 19:14             ` Jan Kiszka
2011-10-17 19:14               ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 09/45] msi: Factor out msi_message_from_vector Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 10/45] msix: Factor out msix_message_from_vector Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 11/45] msi: Factor out delivery hook Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17 10:56   ` Avi Kivity
2011-10-17 10:56     ` [Qemu-devel] " Avi Kivity
2011-10-17 11:15     ` Jan Kiszka
2011-10-17 11:15       ` [Qemu-devel] " Jan Kiszka
2011-10-17 11:22       ` Avi Kivity
2011-10-17 11:22         ` [Qemu-devel] " Avi Kivity
2011-10-17 11:29         ` Jan Kiszka
2011-10-17 11:29           ` [Qemu-devel] " Jan Kiszka
2011-10-17 12:14           ` Avi Kivity
2011-10-17 12:14             ` [Qemu-devel] " Avi Kivity
2011-10-17 18:59             ` Jan Kiszka
2011-10-17 18:59               ` [Qemu-devel] " Jan Kiszka
2011-10-17 13:41       ` Michael S. Tsirkin
2011-10-17 13:41         ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 13:41         ` Avi Kivity
2011-10-17 13:41           ` [Qemu-devel] " Avi Kivity
2011-10-17 13:48           ` Michael S. Tsirkin
2011-10-17 13:48             ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 19:18             ` Jan Kiszka
2011-10-17 19:18               ` [Qemu-devel] " Jan Kiszka
2011-10-17 13:43   ` Michael S. Tsirkin
2011-10-17 13:43     ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 19:15     ` Jan Kiszka
2011-10-17 19:15       ` [Qemu-devel] " Jan Kiszka
2011-10-18 12:05       ` Michael S. Tsirkin
2011-10-18 12:05         ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 12:23         ` Jan Kiszka
2011-10-18 12:23           ` [Qemu-devel] " Jan Kiszka
2011-10-18 12:38           ` Michael S. Tsirkin
2011-10-18 12:38             ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 12:41             ` Jan Kiszka
2011-10-18 12:41               ` [Qemu-devel] " Jan Kiszka
2011-10-18 12:44             ` malc
2011-10-18 12:44               ` [Qemu-devel] " malc
2011-10-18 12:49               ` Michael S. Tsirkin
2011-10-18 12:49                 ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17  9:27 ` [RFC][PATCH 12/45] msi: Introduce MSIRoutingCache Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17 11:06   ` Avi Kivity
2011-10-17 11:06     ` [Qemu-devel] " Avi Kivity
2011-10-17 11:19     ` Jan Kiszka
2011-10-17 11:19       ` [Qemu-devel] " Jan Kiszka
2011-10-17 11:25       ` Avi Kivity
2011-10-17 11:25         ` [Qemu-devel] " Avi Kivity
2011-10-17 11:31         ` Jan Kiszka
2011-10-17 11:31           ` [Qemu-devel] " Jan Kiszka
2011-10-17 12:17           ` Avi Kivity
2011-10-17 12:17             ` [Qemu-devel] " Avi Kivity
2011-10-17 15:37       ` Michael S. Tsirkin
2011-10-17 15:37         ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 19:19         ` Jan Kiszka
2011-10-17 19:19           ` [Qemu-devel] " Jan Kiszka
2011-10-18 12:17           ` Michael S. Tsirkin
2011-10-18 12:17             ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 12:26             ` Jan Kiszka
2011-10-18 12:26               ` [Qemu-devel] " Jan Kiszka
2011-10-17 15:43   ` Michael S. Tsirkin
2011-10-17 15:43     ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 19:23     ` Jan Kiszka
2011-10-17 19:23       ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 13/45] hpet: Use msi_deliver Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 14/45] qemu-kvm: Drop useless kvm_clear_gsi_routes Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 15/45] qemu-kvm: Drop unused kvm_del_irq_route Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 16/45] qemu-kvm: Use MSIMessage and MSIRoutingCache Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 17/45] qemu-kvm: Track MSIRoutingCache in KVM routing table Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17 11:13   ` Avi Kivity
2011-10-17 11:13     ` [Qemu-devel] " Avi Kivity
2011-10-17 11:25     ` Jan Kiszka
2011-10-17 11:25       ` [Qemu-devel] " Jan Kiszka
2011-10-17 12:15       ` Avi Kivity
2011-10-17 12:15         ` [Qemu-devel] " Avi Kivity
2011-10-17  9:27 ` [RFC][PATCH 18/45] qemu-kvm: Hook into MSI delivery at APIC level Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 19/45] qemu-kvm: Factor out kvm_msi_irqfd_set Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 20/45] qemu-kvm: msix: Only invoke msix_handle_mask_update on changes Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 21/45] qemu-kvm: msix: Don't fire notifier spuriously on set/unset Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 22/45] qemu-kvm: msix: Fire mask notifier on global mask changes Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17 12:16   ` Michael S. Tsirkin
2011-10-17 12:16     ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 19:00     ` Jan Kiszka
2011-10-17 19:00       ` [Qemu-devel] " Jan Kiszka
2011-10-18 12:40       ` Michael S. Tsirkin
2011-10-18 12:40         ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 12:45         ` Jan Kiszka
2011-10-18 12:45           ` [Qemu-devel] " Jan Kiszka
2011-10-18 12:57           ` Michael S. Tsirkin
2011-10-18 12:57             ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17  9:27 ` [RFC][PATCH 23/45] qemu-kvm: Rework MSI-X mask notifier to generic MSI config notifiers Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17 11:40   ` Michael S. Tsirkin
2011-10-17 11:40     ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 11:45     ` Jan Kiszka
2011-10-17 11:45       ` [Qemu-devel] " Jan Kiszka
2011-10-17 12:39       ` Michael S. Tsirkin
2011-10-17 12:39         ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 19:08         ` Jan Kiszka
2011-10-17 19:08           ` [Qemu-devel] " Jan Kiszka
2011-10-18 13:46           ` Michael S. Tsirkin
2011-10-18 13:46             ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 13:49             ` Jan Kiszka
2011-10-18 13:49               ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 24/45] qemu-kvm: msix: Don't handle mask updated while disabled Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:27 ` [RFC][PATCH 25/45] qemu-kvm: Update MSI cache on kvm_msi_irqfd_set Jan Kiszka
2011-10-17  9:27   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 26/45] qemu-kvm: Use g_realloc for irq_routes extension Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 27/45] qemu-kvm: Lazily update MSI caches Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 28/45] qemu-kvm: msix: Drop tracking of used vectors Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17 15:48   ` Michael S. Tsirkin [this message]
2011-10-17 15:48     ` Michael S. Tsirkin
2011-10-17 19:28     ` Jan Kiszka
2011-10-17 19:28       ` [Qemu-devel] " Jan Kiszka
2011-10-18 11:58       ` Michael S. Tsirkin
2011-10-18 11:58         ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 12:08         ` Jan Kiszka
2011-10-18 12:08           ` [Qemu-devel] " Jan Kiszka
2011-10-18 12:33           ` Michael S. Tsirkin
2011-10-18 12:33             ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 12:38             ` Jan Kiszka
2011-10-18 12:38               ` [Qemu-devel] " Jan Kiszka
2011-10-18 12:48               ` Michael S. Tsirkin
2011-10-18 12:48                 ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 13:00                 ` Jan Kiszka
2011-10-18 13:00                   ` [Qemu-devel] " Jan Kiszka
2011-10-18 13:37                   ` Michael S. Tsirkin
2011-10-18 13:37                     ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 13:46                     ` Jan Kiszka
2011-10-18 13:46                       ` [Qemu-devel] " Jan Kiszka
2011-10-18 14:01                       ` Michael S. Tsirkin
2011-10-18 14:01                         ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 14:08                         ` Jan Kiszka
2011-10-18 14:08                           ` [Qemu-devel] " Jan Kiszka
2011-10-18 15:08                           ` Michael S. Tsirkin
2011-10-18 15:08                             ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 15:22                             ` Jan Kiszka
2011-10-18 15:22                               ` [Qemu-devel] " Jan Kiszka
2011-10-18 15:55                               ` Jan Kiszka
2011-10-18 15:55                                 ` [Qemu-devel] " Jan Kiszka
2011-10-18 17:06                                 ` Michael S. Tsirkin
2011-10-18 17:06                                   ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 18:24                                   ` Jan Kiszka
2011-10-18 18:24                                     ` [Qemu-devel] " Jan Kiszka
2011-10-18 18:40                                     ` Michael S. Tsirkin
2011-10-18 18:40                                       ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 19:37                                       ` Jan Kiszka
2011-10-18 19:37                                         ` [Qemu-devel] " Jan Kiszka
2011-10-18 21:40                                         ` Michael S. Tsirkin
2011-10-18 21:40                                           ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 22:13                                           ` Jan Kiszka
2011-10-18 22:13                                             ` [Qemu-devel] " Jan Kiszka
2011-10-19  0:56                                             ` Michael S. Tsirkin
2011-10-19  0:56                                               ` [Qemu-devel] " Michael S. Tsirkin
2011-10-19  6:41                                               ` Jan Kiszka
2011-10-19  6:41                                                 ` [Qemu-devel] " Jan Kiszka
2011-10-19  9:03                                                 ` Michael S. Tsirkin
2011-10-19  9:03                                                   ` [Qemu-devel] " Michael S. Tsirkin
2011-10-19 11:17                                                   ` Jan Kiszka
2011-10-19 11:17                                                     ` [Qemu-devel] " Jan Kiszka
2011-10-20 22:02                                                     ` Michael S. Tsirkin
2011-10-20 22:02                                                       ` [Qemu-devel] " Michael S. Tsirkin
2011-10-21  7:09                                                       ` Jan Kiszka
2011-10-21  7:09                                                         ` [Qemu-devel] " Jan Kiszka
2011-10-21  7:54                                                         ` Michael S. Tsirkin
2011-10-21  7:54                                                           ` [Qemu-devel] " Michael S. Tsirkin
2011-10-21  9:27                                                           ` Jan Kiszka
2011-10-21  9:27                                                             ` [Qemu-devel] " Jan Kiszka
2011-10-21 10:57                                                             ` Michael S. Tsirkin
2011-10-21 10:57                                                               ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 18:26                                   ` Jan Kiszka
2011-10-18 18:26                                     ` [Qemu-devel] " Jan Kiszka
2011-10-18 15:56                               ` Michael S. Tsirkin
2011-10-18 15:56                                 ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 15:58                                 ` Jan Kiszka
2011-10-18 15:58                                   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 29/45] pci-assign: Drop kvm_assigned_irq::host_irq initialization Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 30/45] pci-assign: Rename assign_irq to assign_intx Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 31/45] qemu-kvm: Refactor kvm_deassign_irq to kvm_device_irq_deassign Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 32/45] pci-assign: Factor out deassign_irq Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 33/45] qemu-kvm: Factor out kvm_device_intx_assign Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 34/45] qemu-kvm: Factor out kvm_device_msi_assign Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 35/45] pci-assign: Polish assigned_dev_update_msix_mmio Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 36/45] qemu-kvm: Factor out kvm_device_msix_* services Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 37/45] qemu-kvm: Clean up irqrouting API Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 38/45] msi: Implement config notifiers for legacy MSI Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 39/45] pci-assign: Use generic MSI support Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 40/45] qemu-kvm: msix: Drop check for preexisting cap from msix_add_config Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 41/45] msix: Drop unused msix_bar_size Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 42/45] msix: Introduce msix_init_simple Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17 11:22   ` Michael S. Tsirkin
2011-10-17 11:22     ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 11:27     ` Jan Kiszka
2011-10-17 11:27       ` [Qemu-devel] " Jan Kiszka
2011-10-17 14:28       ` Michael S. Tsirkin
2011-10-17 14:28         ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 19:21         ` Jan Kiszka
2011-10-17 19:21           ` [Qemu-devel] " Jan Kiszka
2011-10-18 10:52           ` Michael S. Tsirkin
2011-10-18 10:52             ` [Qemu-devel] " Michael S. Tsirkin
2011-10-18 11:02             ` Jan Kiszka
2011-10-18 11:02               ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 43/45] msix: Allow to customize capability on init Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 44/45] pci-assign: Use generic MSI-X support Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:28 ` [RFC][PATCH 45/45] pci-assign: Fix coding style issues Jan Kiszka
2011-10-17  9:28   ` [Qemu-devel] " Jan Kiszka
2011-10-17 12:18 ` [RFC][PATCH 00/45] qemu-kvm: MSI layer rework for in-kernel irqchip support Avi Kivity
2011-10-17 12:18   ` [Qemu-devel] " Avi Kivity
2011-10-17 15:57 ` Michael S. Tsirkin
2011-10-17 15:57   ` [Qemu-devel] " Michael S. Tsirkin
2011-10-17 19:35   ` Jan Kiszka
2011-10-17 19:35     ` [Qemu-devel] " Jan Kiszka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20111017154852.GC7876@redhat.com \
    --to=mst@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=avi@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.