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 -- 2.25.1