qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC][PATCH 00/45] qemu-kvm: MSI layer rework for in-kernel irqchip support
@ 2011-10-17  9:27 Jan Kiszka
  2011-10-17  9:27 ` [Qemu-devel] [RFC][PATCH 01/45] msi: Guard msi/msix_write_config with msi_present Jan Kiszka
                   ` (46 more replies)
  0 siblings, 47 replies; 144+ messages in thread
From: Jan Kiszka @ 2011-10-17  9:27 UTC (permalink / raw)
  To: Avi Kivity, Marcelo Tosatti
  Cc: kvm, Michael S. Tsirkin, Alexander Graf, qemu-devel,
	Isaku Yamahata, Alex Williamson, Gerd Hoffmann

As previously indicated, I was working for quite a while on a major
refactoring of the MSI "additions" we have in qemu-kvm to support
in-kernel irqchip, vhost and device assignment. This is now the outcome.

I'm quite happy with it, things are still working (apparently), and the
invasiveness of KVM hooks into the MSI layer is significantly reduced.
Moreover, I was able to port the device assignment code over generic MSI
support, reducing the size of that file a bit further.

Some further highlights:
 - fix for HPET MSI support with in-kernel irqchip
 - fully configurable MSI-X (allows 1:1 mapping for assigned devices)
 - refactored KVM core API for device assignment and IRQ routing

I'm sending the whole series in one chunk so that you can see what the
result will be. It's RFC as I bet that there are regressions included
and maybe still room left for improvements. Once all is fine (can be
broken up into multiple chunks for the merge), I would suggest patching
qemu-kvm first and then start with porting things over to upstream.

Comments & review welcome.

CC: Alexander Graf <agraf@suse.de>
CC: Gerd Hoffmann <kraxel@redhat.com>
CC: Isaku Yamahata <yamahata@valinux.co.jp>

Jan Kiszka (45):
  msi: Guard msi/msix_write_config with msi_present
  msi: Guard msi_reset with msi_present
  msi: Use msi/msix_present more consistently
  msi: Invoke msi/msix_reset from PCI core
  msi: Invoke msi/msix_write_config from PCI core
  msix: Prevent bogus mask updates on MMIO accesses
  msi: Generalize msix_supported to msi_supported
  Introduce MSIMessage structure
  msi: Factor out msi_message_from_vector
  msix: Factor out msix_message_from_vector
  msi: Factor out delivery hook
  msi: Introduce MSIRoutingCache
  hpet: Use msi_deliver
  qemu-kvm: Drop useless kvm_clear_gsi_routes
  qemu-kvm: Drop unused kvm_del_irq_route
  qemu-kvm: Use MSIMessage and MSIRoutingCache
  qemu-kvm: Track MSIRoutingCache in KVM routing table
  qemu-kvm: Hook into MSI delivery at APIC level
  qemu-kvm: Factor out kvm_msi_irqfd_set
  qemu-kvm: msix: Only invoke msix_handle_mask_update on changes
  qemu-kvm: msix: Don't fire notifier spuriously on set/unset
  qemu-kvm: msix: Fire mask notifier on global mask changes
  qemu-kvm: Rework MSI-X mask notifier to generic MSI config notifiers
  qemu-kvm: msix: Don't handle mask updated while disabled
  qemu-kvm: Update MSI cache on kvm_msi_irqfd_set
  qemu-kvm: Use g_realloc for irq_routes extension
  qemu-kvm: Lazily update MSI caches
  qemu-kvm: msix: Drop tracking of used vectors
  pci-assign: Drop kvm_assigned_irq::host_irq initialization
  pci-assign: Rename assign_irq to assign_intx
  qemu-kvm: Refactor kvm_deassign_irq to kvm_device_irq_deassign
  pci-assign: Factor out deassign_irq
  qemu-kvm: Factor out kvm_device_intx_assign
  qemu-kvm: Factor out kvm_device_msi_assign
  pci-assign: Polish assigned_dev_update_msix_mmio
  qemu-kvm: Factor out kvm_device_msix_* services
  qemu-kvm: Clean up irqrouting API
  msi: Implement config notifiers for legacy MSI
  pci-assign: Use generic MSI support
  qemu-kvm: msix: Drop check for preexisting cap from msix_add_config
  msix: Drop unused msix_bar_size
  msix: Introduce msix_init_simple
  msix: Allow to customize capability on init
  pci-assign: Use generic MSI-X support
  pci-assign: Fix coding style issues

 hw/apic.c               |   28 ++-
 hw/apic.h               |    1 +
 hw/device-assignment.c  |  751 +++++++++++++++++------------------------------
 hw/device-assignment.h  |   29 +--
 hw/hpet.c               |    7 +-
 hw/ide/ich.c            |    8 -
 hw/intel-hda.c          |   12 -
 hw/ioh3420.c            |    3 +-
 hw/ivshmem.c            |   22 +--
 hw/msi.c                |  329 +++++++++++++---------
 hw/msi.h                |   30 ++-
 hw/msix.c               |  626 ++++++++++++++++++----------------------
 hw/msix.h               |   29 +-
 hw/pc.c                 |   15 +-
 hw/pci.c                |    9 +-
 hw/pci.h                |   34 ++-
 hw/pci_bridge.c         |    4 +
 hw/virtio-pci.c         |   75 ++---
 hw/virtio-pci.h         |    1 -
 hw/xio3130_downstream.c |    3 +-
 hw/xio3130_upstream.c   |    2 -
 kvm-all.c               |    1 +
 kvm-stub.c              |   23 +--
 kvm.h                   |   17 +-
 qemu-common.h           |    2 +
 qemu-kvm-x86.c          |    1 -
 qemu-kvm.c              |  281 ++++++++++++------
 qemu-kvm.h              |   81 +-----
 28 files changed, 1110 insertions(+), 1314 deletions(-)

-- 
1.7.3.4

^ permalink raw reply	[flat|nested] 144+ messages in thread

end of thread, other threads:[~2011-10-21 11:53 UTC | newest]

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).