mbox series

[v4,0/6] Add RISC-V KVM AIA Support

Message ID 20230621145500.25624-1-yongxuan.wang@sifive.com
Headers show
Series Add RISC-V KVM AIA Support | expand

Message

Yong-Xuan Wang June 21, 2023, 2:54 p.m. UTC
This series adds support for KVM AIA in RISC-V architecture.

In order to test these patches, we require Linux with KVM AIA support which can
be found in the riscv_kvm_aia_hwaccel_v1 branch at
https://github.com/avpatel/linux.git

---
v4:
- update the linux header by the scripts/update-linux-headers.sh in PATCH1
- remove the checking for "aplic_m" before creating S-mode APLIC device in PATCH2
- add more setting when we initialize the KVM AIA chip in PATCH4
- fix msi message delivery and the APLIC devices emulation in PATCH5
- fix the AIA devices mapping with NUMA enabled in PATCH6
- add "kvm-aia" parameter to sepecify the KVM AIA mode in PATCH6

v3:
- fix typo
- tag the linux-header patch as placeholder

v2:
- rebase to riscv-to-apply.next
- update the linux header by the scripts/update-linux-headers.sh

Yong-Xuan Wang (6):
  update-linux-headers: sync-up header with Linux for KVM AIA support
    placeholder
  target/riscv: support the AIA device emulation with KVM enabled
  target/riscv: check the in-kernel irqchip support
  target/riscv: Create an KVM AIA irqchip
  target/riscv: update APLIC and IMSIC to support KVM AIA
  target/riscv: select KVM AIA in riscv virt machine

 hw/intc/riscv_aplic.c         |  58 +++++--
 hw/intc/riscv_imsic.c         |  26 ++-
 hw/riscv/virt.c               | 297 +++++++++++++++++++++-------------
 include/hw/riscv/virt.h       |   1 +
 linux-headers/asm-riscv/kvm.h | 123 +++++++++++++-
 linux-headers/linux/kvm.h     |   2 +
 target/riscv/kvm.c            | 176 +++++++++++++++++++-
 target/riscv/kvm_riscv.h      |   6 +
 8 files changed, 554 insertions(+), 135 deletions(-)

Comments

Andrew Jones July 5, 2023, 8:14 a.m. UTC | #1
On Wed, Jun 21, 2023 at 02:54:50PM +0000, Yong-Xuan Wang wrote:
> This series adds support for KVM AIA in RISC-V architecture.
> 
> In order to test these patches, we require Linux with KVM AIA support which can
> be found in the riscv_kvm_aia_hwaccel_v1 branch at
> https://github.com/avpatel/linux.git

Is it possible to add irqfd support? Maybe even as simply as the diff
below? If not, can you explain what still needs to be done in order
to do so?

Thanks,
drew


diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c
index 00fdb60fc6ab..b38d9bb5506a 100644
--- a/hw/intc/riscv_imsic.c
+++ b/hw/intc/riscv_imsic.c
@@ -371,6 +371,7 @@ static void riscv_imsic_realize(DeviceState *dev, Error **errp)
     }

     msi_nonbroken = true;
+    kvm_msi_via_irqfd_allowed = kvm_irqfds_enabled();
 }

 static Property riscv_imsic_properties[] = {
Yong-Xuan Wang July 10, 2023, 4 a.m. UTC | #2
Hi Andrew,

I'll add it into patch v5. Thank you!

Regards,
Yong-Xuan

On Wed, Jul 5, 2023 at 4:14 PM Andrew Jones <ajones@ventanamicro.com> wrote:
>
> On Wed, Jun 21, 2023 at 02:54:50PM +0000, Yong-Xuan Wang wrote:
> > This series adds support for KVM AIA in RISC-V architecture.
> >
> > In order to test these patches, we require Linux with KVM AIA support which can
> > be found in the riscv_kvm_aia_hwaccel_v1 branch at
> > https://github.com/avpatel/linux.git
>
> Is it possible to add irqfd support? Maybe even as simply as the diff
> below? If not, can you explain what still needs to be done in order
> to do so?
>
> Thanks,
> drew
>
>
> diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c
> index 00fdb60fc6ab..b38d9bb5506a 100644
> --- a/hw/intc/riscv_imsic.c
> +++ b/hw/intc/riscv_imsic.c
> @@ -371,6 +371,7 @@ static void riscv_imsic_realize(DeviceState *dev, Error **errp)
>      }
>
>      msi_nonbroken = true;
> +    kvm_msi_via_irqfd_allowed = kvm_irqfds_enabled();
>  }
>
>  static Property riscv_imsic_properties[] = {
>