From: Andrew Jones <ajones@ventanamicro.com>
To: iommu@lists.linux.dev, kvm-riscv@lists.infradead.org,
kvm@vger.kernel.org, linux-riscv@lists.infradead.org,
linux-kernel@vger.kernel.org
Cc: tjeznach@rivosinc.com, zong.li@sifive.com, joro@8bytes.org,
will@kernel.org, robin.murphy@arm.com, anup@brainfault.org,
atishp@atishpatra.org, tglx@linutronix.de,
alex.williamson@redhat.com, paul.walmsley@sifive.com,
palmer@dabbelt.com, aou@eecs.berkeley.edu
Subject: [RFC PATCH 00/15] iommu/riscv: Add irqbypass support
Date: Thu, 14 Nov 2024 17:18:45 +0100 [thread overview]
Message-ID: <20241114161845.502027-17-ajones@ventanamicro.com> (raw)
Platforms with implementations of the RISC-V IOMMU and AIA support
directly delivering MSIs of devices assigned to guests to the VCPUs.
VFIO and KVM have a framework to enable such support, which is called
irqbypass. This series enables irqbypass for devices assigned to KVM
guests when all VCPUs are allocated guest interrupt files. The RISC-V
IOMMU and AIA also support MRIFs (memory-resident interrupt files),
but support for those will be posted as a follow-on to this series.
The patches are organized as follows:
1-3: Prepare to create an MSI remapping irqdomain parented by the IMSIC
4-6: Prepare the IOMMU driver for VFIO domains which will use a single
stage of translation, but G-stage instead of the first stage
7-8: Add support to the IOMMU driver for creating irqdomains
9-10: Prepare KVM to enable irqbypass
11-13: Add irqbypass support to the IOMMU driver and KVM
14-15: Enable VFIO by default
This series is also available here [1] and may be tested with QEMU recent
enough to have the IOMMU model.
Based on linux-next commit 28955f4fa282 ("Add linux-next specific files for 20241112")
[1] https://github.com/jones-drew/linux/commits/riscv/iommu-irqbypass-rfc-v1/
Thanks,
drew
Andrew Jones (10):
irqchip/riscv-imsic: Use hierarchy to reach irq_set_affinity
genirq/msi: Provide DOMAIN_BUS_MSI_REMAP
irqchip/riscv-imsic: Add support for DOMAIN_BUS_MSI_REMAP
iommu/riscv: Move definitions to iommu.h
iommu/riscv: Add IRQ domain for interrupt remapping
RISC-V: KVM: Add irqbypass skeleton
RISC-V: Define irqbypass vcpu_info
iommu/riscv: Add guest file irqbypass support
RISC-V: KVM: Add guest file irqbypass support
RISC-V: defconfig: Add VFIO modules
Tomasz Jeznach (3):
iommu/riscv: report iommu capabilities
RISC-V: KVM: Enable KVM_VFIO interfaces on RISC-V arch
vfio: enable IOMMU_TYPE1 for RISC-V
Zong Li (2):
iommu/riscv: use data structure instead of individual values
iommu/riscv: support GSCID and GVMA invalidation command
arch/riscv/configs/defconfig | 2 +
arch/riscv/include/asm/irq.h | 9 +
arch/riscv/include/asm/kvm_host.h | 3 +
arch/riscv/kvm/Kconfig | 3 +
arch/riscv/kvm/aia_imsic.c | 136 +++++++-
arch/riscv/kvm/vm.c | 60 ++++
drivers/iommu/riscv/Makefile | 2 +-
drivers/iommu/riscv/iommu-bits.h | 11 +
drivers/iommu/riscv/iommu-ir.c | 360 +++++++++++++++++++++
drivers/iommu/riscv/iommu.c | 183 ++++++-----
drivers/iommu/riscv/iommu.h | 78 +++++
drivers/irqchip/irq-riscv-imsic-platform.c | 18 +-
drivers/vfio/Kconfig | 2 +-
include/linux/irqdomain_defs.h | 1 +
14 files changed, 776 insertions(+), 92 deletions(-)
create mode 100644 drivers/iommu/riscv/iommu-ir.c
--
2.47.0
next reply other threads:[~2024-11-14 16:18 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-14 16:18 Andrew Jones [this message]
2024-11-14 16:18 ` [RFC PATCH 01/15] irqchip/riscv-imsic: Use hierarchy to reach irq_set_affinity Andrew Jones
2024-12-03 13:53 ` Thomas Gleixner
2024-12-03 16:27 ` Andrew Jones
2024-12-03 16:50 ` Thomas Gleixner
2024-12-05 16:12 ` Andrew Jones
2024-12-03 16:37 ` Anup Patel
2024-12-03 20:55 ` Thomas Gleixner
2024-12-03 22:59 ` Thomas Gleixner
2024-12-04 3:43 ` Anup Patel
2024-12-04 13:05 ` Thomas Gleixner
2024-11-14 16:18 ` [RFC PATCH 02/15] genirq/msi: Provide DOMAIN_BUS_MSI_REMAP Andrew Jones
2024-11-14 16:18 ` [RFC PATCH 03/15] irqchip/riscv-imsic: Add support for DOMAIN_BUS_MSI_REMAP Andrew Jones
2024-11-14 16:18 ` [RFC PATCH 04/15] iommu/riscv: report iommu capabilities Andrew Jones
2024-11-15 15:20 ` Robin Murphy
2024-11-19 8:28 ` Andrew Jones
2024-11-14 16:18 ` [RFC PATCH 05/15] iommu/riscv: use data structure instead of individual values Andrew Jones
2024-11-14 16:18 ` [RFC PATCH 06/15] iommu/riscv: support GSCID and GVMA invalidation command Andrew Jones
2024-11-14 16:18 ` [RFC PATCH 07/15] iommu/riscv: Move definitions to iommu.h Andrew Jones
2024-11-14 16:18 ` [RFC PATCH 08/15] iommu/riscv: Add IRQ domain for interrupt remapping Andrew Jones
2024-11-18 18:43 ` Jason Gunthorpe
2024-11-19 7:49 ` Andrew Jones
2024-11-19 14:00 ` Jason Gunthorpe
2024-11-19 15:03 ` Andrew Jones
2024-11-19 15:36 ` Jason Gunthorpe
2024-11-22 15:11 ` Andrew Jones
2024-11-22 15:33 ` Jason Gunthorpe
2024-11-22 17:07 ` Andrew Jones
2024-11-25 15:07 ` Jason Gunthorpe
2024-11-14 16:18 ` [RFC PATCH 09/15] RISC-V: KVM: Enable KVM_VFIO interfaces on RISC-V arch Andrew Jones
2024-11-14 16:18 ` [RFC PATCH 10/15] RISC-V: KVM: Add irqbypass skeleton Andrew Jones
2024-11-14 16:18 ` [RFC PATCH 11/15] RISC-V: Define irqbypass vcpu_info Andrew Jones
2024-11-14 16:18 ` [RFC PATCH 12/15] iommu/riscv: Add guest file irqbypass support Andrew Jones
2024-11-14 16:18 ` [RFC PATCH 13/15] RISC-V: KVM: " Andrew Jones
2024-11-14 16:18 ` [RFC PATCH 14/15] vfio: enable IOMMU_TYPE1 for RISC-V Andrew Jones
2024-11-14 16:19 ` [RFC PATCH 15/15] RISC-V: defconfig: Add VFIO modules Andrew Jones
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241114161845.502027-17-ajones@ventanamicro.com \
--to=ajones@ventanamicro.com \
--cc=alex.williamson@redhat.com \
--cc=anup@brainfault.org \
--cc=aou@eecs.berkeley.edu \
--cc=atishp@atishpatra.org \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=kvm-riscv@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=robin.murphy@arm.com \
--cc=tglx@linutronix.de \
--cc=tjeznach@rivosinc.com \
--cc=will@kernel.org \
--cc=zong.li@sifive.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox