Re: [PATCH v6 0/6] x86/xen: Add in-kernel Xen event channel delivery

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/10/21 17:36, David Woodhouse wrote:
Introduce the basic concept of 2 level event channels for kernel delivery,
which is just a simple matter of a few test_and_set_bit calls on a mapped
shared info page.

This can be used for routing MSI of passthrough devices to PIRQ event
channels in a Xen guest, and we can build on it for delivering IPIs and
timers directly from the kernel too.

Queued patches 1-5, thanks.

Paolo

v1: Use kvm_map_gfn() although I didn't quite see how it works.

v2: Avoid kvm_map_gfn() and implement a safe mapping with invalidation
     support for myself.

v3: Reinvent gfn_to_pfn_cache with sane invalidation semantics, for my
     use case as well as nesting.

v4: Rework dirty handling, as it became apparently that we need an active
     vCPU context to mark pages dirty so it can't be done from the MMU
     notifier duing the invalidation; it has to happen on unmap.

v5: Fix sparse warnings reported by kernel test robot <lkp@xxxxxxxxx>.

     Fix revalidation when memslots change but the resulting HVA stays
     the same. We can use the same kernel mapping in that case, if the
     HVA → PFN translation was valid before. So that probably means we
     shouldn't unmap the "old_hva". Augment the test case to exercise
     that one too.

     Include the fix for the dirty ring vs. Xen shinfo oops reported
     by butt3rflyh4ck <butterflyhuangxx@xxxxxxxxx>.

v6: Paolo's review feedback, rebase onto kvm/next dropping the patches
     which are already merged.

Again, the *last* patch in the series (this time #6) is for illustration
and is not intended to be merged as-is.

David Woodhouse (6):
       KVM: Warn if mark_page_dirty() is called without an active vCPU
       KVM: Reinstate gfn_to_pfn_cache with invalidation support
       KVM: x86/xen: Maintain valid mapping of Xen shared_info page
       KVM: x86/xen: Add KVM_IRQ_ROUTING_XEN_EVTCHN and event channel delivery
       KVM: x86: Fix wall clock writes in Xen shared_info not to mark page dirty
       KVM: x86: First attempt at converting nested virtual APIC page to gpc

  Documentation/virt/kvm/api.rst                     |  33 ++
  arch/x86/include/asm/kvm_host.h                    |   4 +-
  arch/x86/kvm/Kconfig                               |   1 +
  arch/x86/kvm/irq_comm.c                            |  12 +
  arch/x86/kvm/vmx/nested.c                          |  50 ++-
  arch/x86/kvm/vmx/vmx.c                             |  12 +-
  arch/x86/kvm/vmx/vmx.h                             |   2 +-
  arch/x86/kvm/x86.c                                 |  15 +-
  arch/x86/kvm/x86.h                                 |   1 -
  arch/x86/kvm/xen.c                                 | 341 +++++++++++++++++++--
  arch/x86/kvm/xen.h                                 |   9 +
  include/linux/kvm_dirty_ring.h                     |   6 -
  include/linux/kvm_host.h                           | 110 +++++++
  include/linux/kvm_types.h                          |  18 ++
  include/uapi/linux/kvm.h                           |  11 +
  .../testing/selftests/kvm/x86_64/xen_shinfo_test.c | 184 ++++++++++-
  virt/kvm/Kconfig                                   |   3 +
  virt/kvm/Makefile.kvm                              |   1 +
  virt/kvm/dirty_ring.c                              |  11 +-
  virt/kvm/kvm_main.c                                |  19 +-
  virt/kvm/kvm_mm.h                                  |  44 +++
  virt/kvm/mmu_lock.h                                |  23 --
  virt/kvm/pfncache.c                                | 337 ++++++++++++++++++++
  23 files changed, 1161 insertions(+), 86 deletions(-)







[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux