Skip to content

irqfd and ioeventfd support for mshv

Vineeth Pillai linux-hyperv lkml virtualization 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest17 patches 8 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/17hyperv: Few TLFS definitionsarch/x86/include/uapi/asm/hyperv-tlfs.h include/asm-generic/hyperv-tlfs.h include/uapi/asm-generic/hyperv-tlfs.h+9 -00 replies
2/17drivers: hv: vmbus: Use TLFS definition for VMBUS_MESSAGE_SINTdrivers/hv/hyperv_vmbus.h+1 -10 replies
3/17acpi: export node_to_pxmdrivers/acpi/numa/srat.c+1 -00 replies
4/17hyperv: Wrapper for setting proximity_domain_infoarch/x86/hyperv/hv_proc.c include/asm-generic/mshyperv.h+18 -110 replies
5/17mshv: SynIC event ring and event flags supportarch/x86/include/asm/hyperv-tlfs.h drivers/hv/hv_synic.c drivers/hv/mshv_main.c +2 more+115 -110 replies
6/17mshv: SynIC port and connection hypercallsdrivers/hv/hv_call.c drivers/hv/mshv.h include/asm-generic/hyperv-tlfs.h +2 more+304 -98 replies
7/17hyperv: Configure SINT for Doorbelldrivers/hv/hv_synic.c include/asm-generic/hyperv-tlfs.h+39 -60 replies
8/17mshv: Port id managementdrivers/hv/Makefile drivers/hv/hv_portid_table.c drivers/hv/mshv.h +1 more+121 -10 replies
9/17mshv: Doorbell handler in hypercall ISRarch/x86/hyperv/hv_init.c arch/x86/include/asm/mshyperv.h drivers/hv/hv_synic.c +2 more+186 -290 replies
10/17mshv: Doorbell register/unregister APIdrivers/hv/hv_synic.c drivers/hv/mshv.h+85 -00 replies
11/17mshv: HvClearVirtualInterrupt hypercalldrivers/hv/hv_call.c drivers/hv/mshv.h include/asm-generic/hyperv-tlfs.h+22 -00 replies
12/17mshv: Add irqfd support for mshvdrivers/hv/Kconfig drivers/hv/Makefile drivers/hv/hv_eventfd.c +4 more+389 -10 replies
13/17mshv: Add ioeventfd support for mshvdrivers/hv/hv_eventfd.c drivers/hv/mshv_main.c include/linux/mshv.h +2 more+300 -190 replies
14/17mshv: Notifier framework for EOI for level triggered interruptsdrivers/hv/hv_eventfd.c drivers/hv/hv_synic.c drivers/hv/mshv_main.c +2 more+79 -00 replies
15/17mshv: Level-triggered interrupt support for irqfddrivers/hv/hv_eventfd.c drivers/hv/mshv_main.c include/linux/mshv.h +2 more+154 -20 replies
16/17mshv: User space controlled MSI irq routing for mshvdrivers/hv/Makefile drivers/hv/mshv_main.c drivers/hv/mshv_msi.c +2 more+202 -10 replies
17/17mshv: Use in kernel MSI routing for irqfddrivers/hv/hv_eventfd.c drivers/hv/mshv_msi.c include/linux/mshv.h +2 more+87 -420 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 00/17] irqfd and ioeventfd support for mshv

This patch series adds irqfd and ioeventfd support for VMMs on Hyper-V. Also adds support for in-kernel MSI irq routing framework. Both these features are inspired from the kvm implementation and all credits to kvm developers.

Patches 1-11 are preparatory patches for enabling irqfd/ioeventfd. Hyper-v features like ports, connections, doorbell etc needs to be enabled to implement irqfd and ioeventfd feature.

Patches 12-15 implements irqfd and ioeventfd, and 16 and 17 implements the in-kernel MSI routing framework.

This patchset is rebased on Nuno's root partition ioctl interface series:
https://lkml.org/lkml/2021/5/28/820
---

Vineeth Pillai (17):
hyperv: Few TLFS definitions
drivers: hv: vmbus: Use TLFS definition for VMBUS_MESSAGE_SINT
acpi: export node_to_pxm
hyperv: Wrapper for setting proximity_domain_info
mshv: SynIC event ring and event flags support
mshv: SynIC port and connection hypercalls
hyperv: Configure SINT for Doorbell
mshv: Port id management
mshv: Doorbell handler in hypercall ISR
mshv: Doorbell register/unregister API
mshv: HvClearVirtualInterrupt hypercall
mshv: Add irqfd support for mshv
mshv: Add ioeventfd support for mshv
mshv: Notifier framework for EOI for level triggered interrupts
mshv: Level-triggered interrupt support for irqfd
mshv: User space controlled MSI irq routing for mshv
mshv: Use in kernel MSI routing for irqfd

 arch/x86/hyperv/hv_init.c               |  32 +-
 arch/x86/hyperv/hv_proc.c               |  15 +-
 arch/x86/include/asm/hyperv-tlfs.h      |   2 +
 arch/x86/include/asm/mshyperv.h         |   2 +
 arch/x86/include/uapi/asm/hyperv-tlfs.h |   2 +
 drivers/acpi/numa/srat.c                |   1 +
 drivers/hv/Kconfig                      |   1 +
 drivers/hv/Makefile                     |   3 +-
 drivers/hv/hv_call.c                    | 181 ++++++
 drivers/hv/hv_eventfd.c                 | 723 ++++++++++++++++++++++++
 drivers/hv/hv_portid_table.c            |  83 +++
 drivers/hv/hv_synic.c                   | 383 +++++++++++--
 drivers/hv/hyperv_vmbus.h               |   2 +-
 drivers/hv/mshv.h                       |  52 ++
 drivers/hv/mshv_main.c                  |  96 +++-
 drivers/hv/mshv_msi.c                   | 128 +++++
 include/asm-generic/hyperv-tlfs.h       | 106 +++-
 include/asm-generic/mshyperv.h          |  14 +
 include/linux/hyperv.h                  |   9 -
 include/linux/mshv.h                    |  65 ++-
 include/linux/mshv_eventfd.h            |  78 +++
 include/uapi/asm-generic/hyperv-tlfs.h  |  81 +++
 include/uapi/linux/mshv.h               |  48 ++
 23 files changed, 2043 insertions(+), 64 deletions(-)
 create mode 100644 drivers/hv/hv_eventfd.c
 create mode 100644 drivers/hv/hv_portid_table.c
 create mode 100644 drivers/hv/mshv_msi.c
 create mode 100644 include/linux/mshv_eventfd.h
Signature · 1 line
2.25.1