All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V5 0/6] IRQ offloading for vDPA
@ 2020-07-31  6:55 Zhu Lingshan
  2020-07-31  6:55 ` [PATCH V5 1/6] vhost: introduce vhost_vring_call Zhu Lingshan
                   ` (5 more replies)
  0 siblings, 6 replies; 34+ messages in thread
From: Zhu Lingshan @ 2020-07-31  6:55 UTC (permalink / raw)
  To: jasowang, alex.williamson, mst, pbonzini, sean.j.christopherson,
	wanpengli
  Cc: virtualization, netdev, kvm, eli, shahafs, parav, Zhu Lingshan

This series intends to implement IRQ offloading for
vhost_vdpa.

By the feat of irq forwarding facilities like posted
interrupt on X86, irq bypass can  help deliver
interrupts to vCPU directly.

vDPA devices have dedicated hardware backends like VFIO
pass-throughed devices. So it would be possible to setup
irq offloading(irq bypass) for vDPA devices and gain
performance improvements.

In my testing, with this feature, we can save 0.1ms
in a ping between two VFs on average.
changes from V4:
(1)in vhost_vdpa, setup irq offloading after config_ops->set_status.
(2)minor improvements

changes from V3:
(1)removed vDPA irq allocate/free helpers in vDPA core.
(2)add a new function get_vq_irq() in struct vdpa_config_ops,
upper layer driver can use this function to: A. query the
irq numbner of a vq. B. detect whether a vq is enabled.
(3)implement get_vq_irq() in ifcvf driver.
(4)in vhost_vdpa, set_status() will setup irq offloading when
setting DRIVER_OK, and unsetup when receive !DRIVER_OK.
(5)minor improvements.

changes from V2:
(1)rename struct vhost_call_ctx to vhost_vring_call
(2)add kvm_arch_end_assignment() in del_producer()
code path
(3)rename vDPA helpers to vdpa_devm_request_irq()
and vdpa_devm_free_irq(). Add better comments
for them.
(4)better comments for setup_vq_irq() and
unsetup_vq_irq()
(5)In vDPA VHOST_SET_VRING_CALL, will call vhost_vdpa_update_vq_irq()
without checking producer.irq, move this check into
vhost_vdpa_update_vq_irq(), so that get advantage of the spinlock.
(6)Add a function vhost_vdpa_clean_irq(), this function will unregister
the producer of vqs when vhost_vdpa_release(). This is safe
for control vq.
(7) minor improvements

changes from V1:
(1)dropped vfio changes.
(3)removed KVM_HVAE_IRQ_BYPASS checks
(4)locking fixes
(5)simplified vhost_vdpa_updat

Zhu Lingshan (6):
  vhost: introduce vhost_vring_call
  kvm: detect assigned device via irqbypass manager
  vDPA: add get_vq_irq() in vdpa_config_ops
  vhost_vdpa: implement IRQ offloading in vhost_vdpa
  ifcvf: implement vdpa_config_ops.get_vq_irq()
  irqbypass: do not start cons/prod when failed connect

 arch/x86/kvm/x86.c              | 12 ++++-
 drivers/vdpa/ifcvf/ifcvf_main.c | 18 ++++++-
 drivers/vhost/Kconfig           |  1 +
 drivers/vhost/vdpa.c            | 83 +++++++++++++++++++++++++++++++--
 drivers/vhost/vhost.c           | 22 ++++++---
 drivers/vhost/vhost.h           |  9 +++-
 include/linux/vdpa.h            |  6 +++
 virt/lib/irqbypass.c            | 16 ++++---
 8 files changed, 147 insertions(+), 20 deletions(-)

-- 
2.18.4


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

end of thread, other threads:[~2020-08-11  2:54 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-31  6:55 [PATCH V5 0/6] IRQ offloading for vDPA Zhu Lingshan
2020-07-31  6:55 ` [PATCH V5 1/6] vhost: introduce vhost_vring_call Zhu Lingshan
2020-08-04  8:38   ` Jason Wang
2020-08-04  8:38     ` Jason Wang
     [not found]     ` <d51dd4e3-7513-c771-104c-b61f9ee70f30@intel.com>
2020-08-04  8:53       ` Jason Wang
2020-08-04  8:53         ` Jason Wang
2020-08-04  9:21         ` Michael S. Tsirkin
2020-08-04  9:21           ` Michael S. Tsirkin
2020-08-05  2:16           ` Jason Wang
2020-08-05  2:16             ` Jason Wang
     [not found]             ` <bf10cde9-db86-a1ac-e2a8-363735e49afb@intel.com>
2020-08-05  5:53               ` Jason Wang
2020-08-05  5:53                 ` Jason Wang
2020-08-10 13:37             ` Michael S. Tsirkin
2020-08-10 13:37               ` Michael S. Tsirkin
2020-08-11  2:53               ` Jason Wang
2020-08-11  2:53                 ` Jason Wang
     [not found]         ` <4605de34-c426-33d4-714b-e03716d0374c@intel.com>
2020-08-05  2:20           ` Jason Wang
2020-08-05  2:20             ` Jason Wang
2020-07-31  6:55 ` [PATCH V5 2/6] kvm: detect assigned device via irqbypass manager Zhu Lingshan
2020-07-31  6:55 ` [PATCH V5 3/6] vDPA: add get_vq_irq() in vdpa_config_ops Zhu Lingshan
2020-07-31  6:55 ` [PATCH V5 4/6] vhost_vdpa: implement IRQ offloading in vhost_vdpa Zhu Lingshan
2020-08-04  8:51   ` Jason Wang
2020-08-04  8:51     ` Jason Wang
     [not found]     ` <ae5385dc-6637-c5a3-b00a-02f66bb9a85f@intel.com>
2020-08-04  9:36       ` Michael S. Tsirkin
2020-08-04  9:36         ` Michael S. Tsirkin
2020-08-05  2:36       ` Jason Wang
2020-08-05  2:36         ` Jason Wang
     [not found]         ` <cb01a490-e9e6-42f5-b6c3-caefa2d91b9f@intel.com>
2020-08-05  5:51           ` Jason Wang
2020-08-05  5:51             ` Jason Wang
2020-08-05  8:06   ` Jason Wang
2020-08-05  8:06     ` Jason Wang
2020-08-05  8:12     ` Zhu, Lingshan
2020-07-31  6:55 ` [PATCH V5 5/6] ifcvf: implement vdpa_config_ops.get_vq_irq() Zhu Lingshan
2020-07-31  6:55 ` [PATCH V5 6/6] irqbypass: do not start cons/prod when failed connect Zhu Lingshan

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.