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 12/45] msi: Introduce MSIRoutingCache
Date: Mon, 17 Oct 2011 17:43:48 +0200 [thread overview]
Message-ID: <20111017154347.GB7876@redhat.com> (raw)
In-Reply-To: <d2dd951083341c26ce23d4f24b8968c9d19a8c6b.1318843693.git.jan.kiszka@siemens.com>
On Mon, Oct 17, 2011 at 11:27:46AM +0200, Jan Kiszka wrote:
> This cache will help us implementing KVM in-kernel irqchip support
> without spreading hooks all over the place.
>
> KVM requires us to register it first and then deliver it by raising a
> pseudo IRQ line returned on registration. While this could be changed
> for QEMU-originated MSI messages by adding direct MSI injection, we will
> still need this translation for irqfd-originated messages. The
> MSIRoutingCache will allow to track those registrations and update them
> lazily before the actual delivery. This avoid having to track MSI
> vectors at device level (like qemu-kvm currently does).
>
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
So if many devices are added, exhausting the number of GSIs supported,
we get terrible performance intead of simply failing outright.
To me, this looks more like a bug than a feature ...
> ---
> hw/apic.c | 5 +++--
> hw/apic.h | 2 +-
> hw/msi.c | 10 +++++++---
> hw/msi.h | 14 +++++++++++++-
> hw/msix.c | 7 ++++++-
> hw/pc.c | 4 ++--
> hw/pci.h | 4 ++++
> qemu-common.h | 1 +
> 8 files changed, 37 insertions(+), 10 deletions(-)
>
> diff --git a/hw/apic.c b/hw/apic.c
> index c1d557d..6811ae1 100644
> --- a/hw/apic.c
> +++ b/hw/apic.c
> @@ -804,7 +804,7 @@ static uint32_t apic_mem_readl(void *opaque, target_phys_addr_t addr)
> return val;
> }
>
> -void apic_deliver_msi(MSIMessage *msg)
> +void apic_deliver_msi(MSIMessage *msg, MSIRoutingCache *cache)
> {
> uint8_t dest =
> (msg->address & MSI_ADDR_DEST_ID_MASK) >> MSI_ADDR_DEST_ID_SHIFT;
> @@ -829,8 +829,9 @@ static void apic_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
> * Mapping them on the global bus happens to work because
> * MSI registers are reserved in APIC MMIO and vice versa. */
> MSIMessage msg = { .address = addr, .data = val };
> + static MSIRoutingCache cache;
>
> - msi_deliver(&msg);
> + msi_deliver(&msg, &cache);
> return;
> }
>
> diff --git a/hw/apic.h b/hw/apic.h
> index fa848fd..353ea3a 100644
> --- a/hw/apic.h
> +++ b/hw/apic.h
> @@ -18,7 +18,7 @@ void cpu_set_apic_tpr(DeviceState *s, uint8_t val);
> uint8_t cpu_get_apic_tpr(DeviceState *s);
> void apic_init_reset(DeviceState *s);
> void apic_sipi(DeviceState *s);
> -void apic_deliver_msi(MSIMessage *msg);
> +void apic_deliver_msi(MSIMessage *msg, MSIRoutingCache *cache);
>
> /* pc.c */
> int cpu_is_bsp(CPUState *env);
> diff --git a/hw/msi.c b/hw/msi.c
> index 9055155..c8ccb17 100644
> --- a/hw/msi.c
> +++ b/hw/msi.c
> @@ -40,13 +40,13 @@
> /* Flag for interrupt controller to declare MSI/MSI-X support */
> bool msi_supported;
>
> -static void msi_unsupported(MSIMessage *msg)
> +static void msi_unsupported(MSIMessage *msg, MSIRoutingCache *cache)
> {
> /* If we get here, the board failed to register a delivery handler. */
> abort();
> }
>
> -void (*msi_deliver)(MSIMessage *msg) = msi_unsupported;
> +void (*msi_deliver)(MSIMessage *msg, MSIRoutingCache *cache) = msi_unsupported;
>
> /* If we get rid of cap allocator, we won't need this. */
> static inline uint8_t msi_cap_sizeof(uint16_t flags)
> @@ -288,6 +288,8 @@ int msi_init(struct PCIDevice *dev, uint8_t offset,
> 0xffffffff >> (PCI_MSI_VECTORS_MAX - nr_vectors));
> }
>
> + dev->msi_cache = g_malloc0(nr_vectors * sizeof(*dev->msi_cache));
> +
> if (kvm_enabled() && kvm_irqchip_in_kernel()) {
> dev->msi_irq_entries = g_malloc(nr_vectors *
> sizeof(*dev->msix_irq_entries));
> @@ -312,6 +314,8 @@ void msi_uninit(struct PCIDevice *dev)
> g_free(dev->msi_irq_entries);
> }
>
> + g_free(dev->msi_cache);
> +
> pci_del_capability(dev, PCI_CAP_ID_MSI, cap_size);
> dev->cap_present &= ~QEMU_PCI_CAP_MSI;
>
> @@ -389,7 +393,7 @@ void msi_notify(PCIDevice *dev, unsigned int vector)
> "notify vector 0x%x"
> " address: 0x%"PRIx64" data: 0x%"PRIx32"\n",
> vector, msg.address, msg.data);
> - msi_deliver(&msg);
> + msi_deliver(&msg, &dev->msi_cache[vector]);
> }
>
> /* Normally called by pci_default_write_config(). */
> diff --git a/hw/msi.h b/hw/msi.h
> index f3152f3..20ae215 100644
> --- a/hw/msi.h
> +++ b/hw/msi.h
> @@ -29,6 +29,18 @@ struct MSIMessage {
> uint32_t data;
> };
>
> +typedef enum {
> + MSI_ROUTE_NONE = 0,
> + MSI_ROUTE_STATIC,
> +} MSIRouteType;
> +
> +struct MSIRoutingCache {
> + MSIMessage msg;
> + MSIRouteType type;
> + int kvm_gsi;
> + int kvm_irqfd;
> +};
> +
> extern bool msi_supported;
>
> bool msi_enabled(const PCIDevice *dev);
> @@ -46,6 +58,6 @@ static inline bool msi_present(const PCIDevice *dev)
> return dev->cap_present & QEMU_PCI_CAP_MSI;
> }
>
> -extern void (*msi_deliver)(MSIMessage *msg);
> +extern void (*msi_deliver)(MSIMessage *msg, MSIRoutingCache *cache);
>
> #endif /* QEMU_MSI_H */
> diff --git a/hw/msix.c b/hw/msix.c
> index 08cc526..e824aef 100644
> --- a/hw/msix.c
> +++ b/hw/msix.c
> @@ -358,6 +358,8 @@ int msix_init(struct PCIDevice *dev, unsigned short nentries,
> if (ret)
> goto err_config;
>
> + dev->msix_cache = g_malloc0(nentries * sizeof *dev->msix_cache);
> +
> if (kvm_enabled() && kvm_irqchip_in_kernel()) {
> dev->msix_irq_entries = g_malloc(nentries *
> sizeof *dev->msix_irq_entries);
> @@ -409,6 +411,9 @@ int msix_uninit(PCIDevice *dev, MemoryRegion *bar)
> dev->msix_entry_used = NULL;
> g_free(dev->msix_irq_entries);
> dev->msix_irq_entries = NULL;
> +
> + g_free(dev->msix_cache);
> +
> dev->cap_present &= ~QEMU_PCI_CAP_MSIX;
> return 0;
> }
> @@ -478,7 +483,7 @@ void msix_notify(PCIDevice *dev, unsigned vector)
>
> msix_message_from_vector(dev, vector, &msg);
>
> - msi_deliver(&msg);
> + msi_deliver(&msg, &dev->msix_cache[vector]);
> }
>
> void msix_reset(PCIDevice *dev)
> diff --git a/hw/pc.c b/hw/pc.c
> index 7d29a4a..4d8b524 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -103,10 +103,10 @@ void isa_irq_handler(void *opaque, int n, int level)
> qemu_set_irq(isa->ioapic[n], level);
> };
>
> -static void pc_msi_deliver(MSIMessage *msg)
> +static void pc_msi_deliver(MSIMessage *msg, MSIRoutingCache *cache)
> {
> if ((msg->address & 0xfff00000) == MSI_ADDR_BASE) {
> - apic_deliver_msi(msg);
> + apic_deliver_msi(msg, cache);
> } else {
> stl_phys(msg->address, msg->data);
> }
> diff --git a/hw/pci.h b/hw/pci.h
> index 329ab32..5b5d2fd 100644
> --- a/hw/pci.h
> +++ b/hw/pci.h
> @@ -197,6 +197,10 @@ struct PCIDevice {
> MemoryRegion rom;
> uint32_t rom_bar;
>
> + /* MSI routing chaches */
> + MSIRoutingCache *msi_cache;
> + MSIRoutingCache *msix_cache;
> +
> /* MSI entries */
> int msi_entries_nr;
> struct KVMMsiMessage *msi_irq_entries;
> diff --git a/qemu-common.h b/qemu-common.h
> index d3901bd..c1d1614 100644
> --- a/qemu-common.h
> +++ b/qemu-common.h
> @@ -16,6 +16,7 @@ typedef struct QEMUFile QEMUFile;
> typedef struct QEMUBH QEMUBH;
> typedef struct DeviceState DeviceState;
> typedef struct MSIMessage MSIMessage;
> +typedef struct MSIRoutingCache MSIRoutingCache;
>
> struct Monitor;
> typedef struct Monitor Monitor;
> --
> 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 12/45] msi: Introduce MSIRoutingCache
Date: Mon, 17 Oct 2011 17:43:48 +0200 [thread overview]
Message-ID: <20111017154347.GB7876@redhat.com> (raw)
In-Reply-To: <d2dd951083341c26ce23d4f24b8968c9d19a8c6b.1318843693.git.jan.kiszka@siemens.com>
On Mon, Oct 17, 2011 at 11:27:46AM +0200, Jan Kiszka wrote:
> This cache will help us implementing KVM in-kernel irqchip support
> without spreading hooks all over the place.
>
> KVM requires us to register it first and then deliver it by raising a
> pseudo IRQ line returned on registration. While this could be changed
> for QEMU-originated MSI messages by adding direct MSI injection, we will
> still need this translation for irqfd-originated messages. The
> MSIRoutingCache will allow to track those registrations and update them
> lazily before the actual delivery. This avoid having to track MSI
> vectors at device level (like qemu-kvm currently does).
>
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
So if many devices are added, exhausting the number of GSIs supported,
we get terrible performance intead of simply failing outright.
To me, this looks more like a bug than a feature ...
> ---
> hw/apic.c | 5 +++--
> hw/apic.h | 2 +-
> hw/msi.c | 10 +++++++---
> hw/msi.h | 14 +++++++++++++-
> hw/msix.c | 7 ++++++-
> hw/pc.c | 4 ++--
> hw/pci.h | 4 ++++
> qemu-common.h | 1 +
> 8 files changed, 37 insertions(+), 10 deletions(-)
>
> diff --git a/hw/apic.c b/hw/apic.c
> index c1d557d..6811ae1 100644
> --- a/hw/apic.c
> +++ b/hw/apic.c
> @@ -804,7 +804,7 @@ static uint32_t apic_mem_readl(void *opaque, target_phys_addr_t addr)
> return val;
> }
>
> -void apic_deliver_msi(MSIMessage *msg)
> +void apic_deliver_msi(MSIMessage *msg, MSIRoutingCache *cache)
> {
> uint8_t dest =
> (msg->address & MSI_ADDR_DEST_ID_MASK) >> MSI_ADDR_DEST_ID_SHIFT;
> @@ -829,8 +829,9 @@ static void apic_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
> * Mapping them on the global bus happens to work because
> * MSI registers are reserved in APIC MMIO and vice versa. */
> MSIMessage msg = { .address = addr, .data = val };
> + static MSIRoutingCache cache;
>
> - msi_deliver(&msg);
> + msi_deliver(&msg, &cache);
> return;
> }
>
> diff --git a/hw/apic.h b/hw/apic.h
> index fa848fd..353ea3a 100644
> --- a/hw/apic.h
> +++ b/hw/apic.h
> @@ -18,7 +18,7 @@ void cpu_set_apic_tpr(DeviceState *s, uint8_t val);
> uint8_t cpu_get_apic_tpr(DeviceState *s);
> void apic_init_reset(DeviceState *s);
> void apic_sipi(DeviceState *s);
> -void apic_deliver_msi(MSIMessage *msg);
> +void apic_deliver_msi(MSIMessage *msg, MSIRoutingCache *cache);
>
> /* pc.c */
> int cpu_is_bsp(CPUState *env);
> diff --git a/hw/msi.c b/hw/msi.c
> index 9055155..c8ccb17 100644
> --- a/hw/msi.c
> +++ b/hw/msi.c
> @@ -40,13 +40,13 @@
> /* Flag for interrupt controller to declare MSI/MSI-X support */
> bool msi_supported;
>
> -static void msi_unsupported(MSIMessage *msg)
> +static void msi_unsupported(MSIMessage *msg, MSIRoutingCache *cache)
> {
> /* If we get here, the board failed to register a delivery handler. */
> abort();
> }
>
> -void (*msi_deliver)(MSIMessage *msg) = msi_unsupported;
> +void (*msi_deliver)(MSIMessage *msg, MSIRoutingCache *cache) = msi_unsupported;
>
> /* If we get rid of cap allocator, we won't need this. */
> static inline uint8_t msi_cap_sizeof(uint16_t flags)
> @@ -288,6 +288,8 @@ int msi_init(struct PCIDevice *dev, uint8_t offset,
> 0xffffffff >> (PCI_MSI_VECTORS_MAX - nr_vectors));
> }
>
> + dev->msi_cache = g_malloc0(nr_vectors * sizeof(*dev->msi_cache));
> +
> if (kvm_enabled() && kvm_irqchip_in_kernel()) {
> dev->msi_irq_entries = g_malloc(nr_vectors *
> sizeof(*dev->msix_irq_entries));
> @@ -312,6 +314,8 @@ void msi_uninit(struct PCIDevice *dev)
> g_free(dev->msi_irq_entries);
> }
>
> + g_free(dev->msi_cache);
> +
> pci_del_capability(dev, PCI_CAP_ID_MSI, cap_size);
> dev->cap_present &= ~QEMU_PCI_CAP_MSI;
>
> @@ -389,7 +393,7 @@ void msi_notify(PCIDevice *dev, unsigned int vector)
> "notify vector 0x%x"
> " address: 0x%"PRIx64" data: 0x%"PRIx32"\n",
> vector, msg.address, msg.data);
> - msi_deliver(&msg);
> + msi_deliver(&msg, &dev->msi_cache[vector]);
> }
>
> /* Normally called by pci_default_write_config(). */
> diff --git a/hw/msi.h b/hw/msi.h
> index f3152f3..20ae215 100644
> --- a/hw/msi.h
> +++ b/hw/msi.h
> @@ -29,6 +29,18 @@ struct MSIMessage {
> uint32_t data;
> };
>
> +typedef enum {
> + MSI_ROUTE_NONE = 0,
> + MSI_ROUTE_STATIC,
> +} MSIRouteType;
> +
> +struct MSIRoutingCache {
> + MSIMessage msg;
> + MSIRouteType type;
> + int kvm_gsi;
> + int kvm_irqfd;
> +};
> +
> extern bool msi_supported;
>
> bool msi_enabled(const PCIDevice *dev);
> @@ -46,6 +58,6 @@ static inline bool msi_present(const PCIDevice *dev)
> return dev->cap_present & QEMU_PCI_CAP_MSI;
> }
>
> -extern void (*msi_deliver)(MSIMessage *msg);
> +extern void (*msi_deliver)(MSIMessage *msg, MSIRoutingCache *cache);
>
> #endif /* QEMU_MSI_H */
> diff --git a/hw/msix.c b/hw/msix.c
> index 08cc526..e824aef 100644
> --- a/hw/msix.c
> +++ b/hw/msix.c
> @@ -358,6 +358,8 @@ int msix_init(struct PCIDevice *dev, unsigned short nentries,
> if (ret)
> goto err_config;
>
> + dev->msix_cache = g_malloc0(nentries * sizeof *dev->msix_cache);
> +
> if (kvm_enabled() && kvm_irqchip_in_kernel()) {
> dev->msix_irq_entries = g_malloc(nentries *
> sizeof *dev->msix_irq_entries);
> @@ -409,6 +411,9 @@ int msix_uninit(PCIDevice *dev, MemoryRegion *bar)
> dev->msix_entry_used = NULL;
> g_free(dev->msix_irq_entries);
> dev->msix_irq_entries = NULL;
> +
> + g_free(dev->msix_cache);
> +
> dev->cap_present &= ~QEMU_PCI_CAP_MSIX;
> return 0;
> }
> @@ -478,7 +483,7 @@ void msix_notify(PCIDevice *dev, unsigned vector)
>
> msix_message_from_vector(dev, vector, &msg);
>
> - msi_deliver(&msg);
> + msi_deliver(&msg, &dev->msix_cache[vector]);
> }
>
> void msix_reset(PCIDevice *dev)
> diff --git a/hw/pc.c b/hw/pc.c
> index 7d29a4a..4d8b524 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -103,10 +103,10 @@ void isa_irq_handler(void *opaque, int n, int level)
> qemu_set_irq(isa->ioapic[n], level);
> };
>
> -static void pc_msi_deliver(MSIMessage *msg)
> +static void pc_msi_deliver(MSIMessage *msg, MSIRoutingCache *cache)
> {
> if ((msg->address & 0xfff00000) == MSI_ADDR_BASE) {
> - apic_deliver_msi(msg);
> + apic_deliver_msi(msg, cache);
> } else {
> stl_phys(msg->address, msg->data);
> }
> diff --git a/hw/pci.h b/hw/pci.h
> index 329ab32..5b5d2fd 100644
> --- a/hw/pci.h
> +++ b/hw/pci.h
> @@ -197,6 +197,10 @@ struct PCIDevice {
> MemoryRegion rom;
> uint32_t rom_bar;
>
> + /* MSI routing chaches */
> + MSIRoutingCache *msi_cache;
> + MSIRoutingCache *msix_cache;
> +
> /* MSI entries */
> int msi_entries_nr;
> struct KVMMsiMessage *msi_irq_entries;
> diff --git a/qemu-common.h b/qemu-common.h
> index d3901bd..c1d1614 100644
> --- a/qemu-common.h
> +++ b/qemu-common.h
> @@ -16,6 +16,7 @@ typedef struct QEMUFile QEMUFile;
> typedef struct QEMUBH QEMUBH;
> typedef struct DeviceState DeviceState;
> typedef struct MSIMessage MSIMessage;
> +typedef struct MSIRoutingCache MSIRoutingCache;
>
> struct Monitor;
> typedef struct Monitor Monitor;
> --
> 1.7.3.4
next prev parent reply other threads:[~2011-10-17 15:42 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 [this message]
2011-10-17 15:43 ` 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
2011-10-17 15:48 ` [Qemu-devel] " 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=20111017154347.GB7876@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.